django快速开发小结

django开发前期准备

安装django

pip install django

测试django版本

import django
print django.VERSION

建立名称为website的django项目

django-admin startproject website

建立应用(项目模块)

python manage.py strtapp module_name

使用内置的服务器进行测试开发

python manager.py runserver 127.0.0.1:8080

使用django进行调试

# 进入python的shell可进行线上调试
python manage.py shell 

django基础开发

视图开发

  1. 在website/module_name/views.py 建立路由函数
from django.http import HttpResponse

def index(request):
    return HttpResponse("<h3>xxxxx</h3>")

  1. 在website/module_name下创建urls.py,管理所有app的url映射
from django,conf.urls import url
from . import views

urlpatterns = [
    url(r'', views.index),
    url(r'user_input', views.user_input),
]

模型开发

  1. 生成移植文件
# 生成数据移植文件,即将models.py定义的数据表转化为数据库生成脚本的过程
cd website/
python manage.py makemigraations module_name

# 执行之后会将所有的文件以及之后的migration文件都存在于目录website/app/migrations中
  1. 移植到数据库中
cd website
python manage.py migrate
  1. 模型的定义
# models.py
from django.db import models, connection

class UserManager(models.Manager): 
    def auth_count(self,auth_string):
        return self.filter(user_auth=auth_string).count()
    
    def getUsersExceptSelf(self,auth_string):
        cursor = connection.cursor()
        cursor.execute("""
        SELECT u.user_id FROM ss_user u WHERE u.user_auth!='%s' LIMIT 100
           """ % auth_string)
        
        _result = []
        
        for row in cursor.fetchall():
            _result.append(row[0])
        
        return _result
    
    def getId(self,auth_string):    
        cursor = connection.cursor()
        cursor.execute("""
        SELECT u.user_id FROM ss_user u WHERE u.user_auth!='%s'
           """ % auth_string)
        
        _id = 0
        try:
            _id = [0][0]
        except IndexError,e:
            print "UserManager-->token_expires-->",e
        finally:
            return _id
        
    
    def token_expires(self,auth_string):
        cursor = connection.cursor()
        cursor.execute("""
        SELECT u.user_token_expires FROM ss_user u WHERE u.user_auth='%s'
           """ % auth_string)
        _token_expires = 0
        try:
            _token_expires = [0][0]
        except IndexError,e:
            print "UserManager-->token_expires-->",e
        finally:
            return _token_expires
        
        
    def userId_count(self,user_id):
        cursor = connection.cursor()
        cursor.execute("""
        SELECT COUNT(0) FROM ss_user u WHERE u.user_id=%d
           """ % user_id)
        
        _nums = 0
        try:
            _nums = cursor.fetchall()[0][0]
        except IndexError,e:
            print "UserManager-->token_expires-->",e
        finally:
            return _nums  
         
    # for task 
    def getUserIdByLabelType(self,labelType,user_latitude,user_longitude):
        _label_list = labelType.split(",")
        
        if len(_label_list)==1:
            raise AppError("it must be use ',' to combinate label code ")
        
        toUserIds = []
        sql = """ SELECT u.user_id FROM ss_user u WHERE u.user_longitude=%d AND u.user_latitude=%d """ % (user_longitude,user_latitude)
        for label_code in _label_list:
            sql = sql + "u.user_label_type LIKE %"+label_code+"% ORDER BY u.user_type DESC LIMIT 1"
            cursor = connection.cursor()
            cursor.execute(sql)
            toUserIds.append(cursor.fetchall()[0][0])
            
        return toUserIds 
     

class Users(models.Model):
    ## attention,this set blank = True but there is not applied at the db mysql
    user_id = models.PositiveIntegerField(auto_created=True,primary_key=True)
    user_email = models.EmailField(max_length=50,unique=True)
    user_phone = models.CharField(max_length=11,unique=True)
    user_pwd = models.CharField(max_length=32)
    user_really_name = models.CharField(max_length=50,blank=True,null=True)
    user_alias_name = models.CharField(max_length=50,blank=True,null=True)
    user_sex = models.SmallIntegerField(choices=((0, 'Male'), (1, 'Female')),default=1)
    user_auth = models.CharField(max_length=40,unique=True)
    user_token = models.CharField(max_length=40,unique=True)
    user_token_expires = models.FloatField()
    user_longitude =models.DecimalField(max_digits=10, decimal_places=6,blank=True,null=True)
    user_latitude =models.DecimalField(max_digits=10, decimal_places=6,blank=True,null=True)
    user_ip = models.PositiveIntegerField(blank=True,null=True)
    user_label_type = models.CharField(max_length=50,blank=True,null=True)
    user_type = models.SmallIntegerField(choices=((0, 'asker'), (1, 'helper')),default=0)
    
    def __unicode__(self):
        return u"%d %s %s %s" % (self.user_id,self.user_email,self.user_really_name,self.user_alias_name)
    
    auth_manager = UserManager()
    objects = models.Manager()
    
    class Meta:
        db_table = "ss_user"

表单开发

# forms.py,定义表单类
from django.forms import ModelForm
from module_name.models import Users

class UsersForm(ModelForm):
    class Meta:
        model = Users
        fileds = '__all__'      # 导入模型所有的数据
        # fields = ['user_email', 'user_really_name', ...]    # 导入部分数据

开发模版

# 在website/templates/module_name/user_tpl.html
# 模版使用 {{ form_data.attr }}

开发视图

from module_name.forms import UsersForm
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.shortcuts import render
import os

def user_input(request):
    if request.method == "POST":
        form = UsersForm(request.POST)
        if form.is_valid():
            users = form.save()
            users.save()
            return HttpResponseRedirect(reverse("module_name.views.index"))
    form = UsersForm()
    webroot = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    return render(request, os.path.join(webroot, "templates/module_name", "user_tpl.html"), {"form": form})
发布了63 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wind_602/article/details/90247285