1 1、请求周期
2 url> 路由 > 函数或类 > 返回字符串或者模板语言?
3
4 Form表单提交:
5 提交 -> url > 函数或类中的方法
6 - ....
7 HttpResponse('....')
8 render(request,'index.html')
9 redirect('/index/')
10 用户 < < 返回字符串
11 (当接受到redirect时)自动发起另外一个请求
12 --> url .....
13
14 Ajax:
15 $.ajax({
16 url: '/index/',
17 data: {'k': 'v', 'list': [1,2,3,4], 'k3': JSON.stringfy({'k1': 'v'}))}, $(form对象).serilize()
18 type: 'POST',
19 dataType: 'JSON':
20 traditional: true,
21 success:function(d){
22 location.reload() # 刷新
23 location.href = "某个地址" # 跳转
24 }
25 })
26 提交 -> url -> 函数或类中的方法
27 HttpResponse('{}')
28 render(request, 'index.html', {'name': 'v1'})
29 <h1>{{ name }}</h1> -->
30 <h1>v1</h1>
31
32 XXXXXXX redirect...
33 用户 <<<<< 字符串
34
35
36 2、路由系统URL
37 a. /index/ -> 函数或类
38 b. /index/(\d+) -> 函数或类
39 c. /index/(?P<nid>\d+) -> 函数或类
40 d. /index/(?P<nid>\d+) name='root' -> 函数或类
41 reverse()
42 {% url 'root' 1%}
43 e. /crm/ include('app01.urls') -> 路由分发
44
45 f. 默认值
46 url(r'^index/', views.index, {'name': 'root'}),#在url设置默认值
47
48 def index(request,name):#相关函数需要设置接收的形参
49 print(name)
50 return HttpResponse('OK')
51
52 g. 命名空间
53
54 /admin/ include('app01.urls',namespace='m1')
55 /crm/ include('app01.urls',namespace='m1')
56
57 app01.urls
58 /index/ name = 'n1'
59
60
61 reverser('m1:n1')
62
63 3、后台取数据
64 def func(request):
65 request.POST
66 request.GET
67 request.FILES
68 request.getlist
69 request.method
70 request.path_info
71
72 return render,HttpResponse,redirect
73
74 4、模板语言
75 render(request, 'index.html')
76 # for
77 # if
78 # 索引. keys values items all
79
80 5、 数据库 models操作
81 #创建一个表结构
82 class User(models.Model):
83 username = models.CharField(max_length=32)
84 email = models.EmailField()
85
86 有验证功能
87 Django Admin
88 无验证功能:
89 User.objects.create(username='root',email='asdfasdfasdfasdf')
90 User.objects.filter(id=1).update(email='666')
91
92
93 #创建一个表结构 用户属性表
94 class UserType(models.Model):
95 name = models.CharField(max_length=32)
96
97 #创建一个表结构 用户信息表
98 class User(models.Model):
99 username = models.CharField(max_length=32)
100 email = models.EmailField()
101 user_type = models.ForeignKey("UserType")#外键 关联 UserType 表
102
103 user_list = User.objects.all()#获取User表,所有记录
104 for obj user_list:
105 obj.username,obj.email,obj.user_type_id,obj.user_type.name,obj.user_type.id
106
107 user = User.objects.get(id=1)#获取ID为1 的记录 为对象
108 user.
109
110 User.objects.all().values("username","user_type__name",)#获取所有记录 的username 和 跨表的name
111
112
113
114 class UserType(models.Model):
115 name = models.CharField(max_length=32)
116
117 #创建一个表结构 用户信息表
118 class User(models.Model):
119 username = models.CharField(max_length=32)
120 email = models.EmailField()
121 user_type = models.ForeignKey("UserType")#外键 关联
122 m = models.ManyToMany('UserGroup')#与 UserGroup 的 第三张关联表 多对多
123
124 #创建一个表结构 用户组表 多对多
125 class UserGroup(models.Model):
126 name = ....
127
128
129
130 obj = User.objects.get(id=1)#获取记录对象
131 obj.m.add(2)#对第三张表进行添加关联
132 obj.m.add(2,3)
133 obj.m.add(*[1,2,3])
134
135 obj.m.remove(...)#对第三张表进行删除关联
136
137 obj.m.clear()#清除当前记录的所有关联关系
138
139 obj.m.set([1,2,3,4,5])#设置关联 (重新所有的设置)
14