day17 Django学习三
参考博客:
http://www.cnblogs.com/wupeiqi/articles/5237704.html
http://www.cnblogs.com/wupeiqi/articles/5246483.html
1 s16day17 2 3 4 上节内容回顾: 5 6 路由系统: 7 1. /index/ -> def index(request) 8 2. 9 /detail-(\d+)/ -> def detail(request,nid) 10 /detail-(?P<nid>\d+)/ -> def detail(request,nid) 11 12 3. 13 /index/ -> def index(request) name=n1 14 使用别名生成URL: 15 模板语言: {% url n1 %} -> /index/ 16 视图函数: 17 reverse(name="n1") -> /index/ 18 19 4. 20 21 /web/ include("app01.urls") 22 视图函数: 23 1. 函数至少一个参数 24 2. request 25 request.method 26 request.GET 27 request.POST (请求头:Content-Type:application/x-www-form-urlencoded; charset=UTF-8) 28 request.body 29 request.FILES 30 ... 31 3. 32 return HttpResponse(..) 33 return render() 34 return redirect() 35 36 模板引擎: 37 38 1. 基本语法 39 40 return renderI(request, 'xxx.html', {'v': [1,2,3,4],'d':{'k1':'v1','k2':'v2'} }) 41 42 xxx.html 43 {{v.2}} 44 45 {% for i in d %} 46 {{i}} --> key 47 {% endfor %} 48 49 50 {% for k,v in d.items %} 51 {{k}}--{{v}} 52 {% endfor %} 53 54 2. 函数 55 56 Django提供函数 57 simple_tag 58 filter 59 60 ORM操作: 61 1. 创建表 62 63 class UserInfo(models.Model): 64 # nid = models.AutoField(primary_key=True) int 65 # nid = models.BigAutoField(primary_key=True) long 66 name = models.CharField(max_length=32) 67 pwd = models.CharField(max_length=32) 68 69 70 71 72 2. 操作表 73 74 q = models.UserInfo.objects.all() 75 Queryset = [obj(id,name,pwd),obj(id,name,pwd),obj(id,name,pwd),] 76 77 78 q = models.UserInfo.objects.values('name','pwd') 79 Queryset = [{"name":'alex','pwd':123},{"name":'alex1','pwd':123sfd},{"name":'alex1','pwd':123sfd},] 80 81 82 q = models.UserInfo.objects.values_list('name','pwd') 83 Queryset = [('alex',123),('alex',123),('alex',123),('alex',123),] 84 85 86 87 q = models.UserInfo.objects.filter(name='alex') 88 [obj,] 89 90 91 q = models.UserInfo.objects.get(name='alex') 92 q = models.UserInfo.objects.filter(name='alex').first() 93 94 95 ... 96 97 98 99 100 今日内容: 101 102 1. FBV和CBV 103 104 FBV: 105 106 url(r'^index/', views.index), 107 108 def index(request): 109 print('.....') 110 if request.method == 'GET': 111 pass 112 elif request.method == 'POST': 113 pass 114 return HttpResponse('....') 115 116 117 CBV: 118 url(r'^user/', views.User.as_view()), 119 120 121 class User(View): 122 def dispatch(self, request, *args, **kwargs): 123 print('before') 124 obj = super(User,self).dispatch(request, *args, **kwargs) 125 print('after') 126 return obj 127 128 def get(self,request): 129 print("get...") 130 return HttpResponse('...') 131 132 def post(self,request): 133 print("post...") 134 return HttpResponse('...') 135 136 2. ORM操作 137 138 a. 创建表 139 一对多 140 多对多 141 - 创建第三表: 142 - 自己定义第三张表 :列无限制 143 - ManyToManyField字段: 列限制(三) 144 - 无法直接,只能通过ManyToManyField字段进行间接操作 145 146 b. 操作 147 正向 148 dp 149 反向 150 userinfo 151 userinfo_set 152 153 3. Cookie 154 在浏览器上保存的简直对 155 应用: 156 可做用户登录 157 做投票 158 4. session 159 服务器端保存的简直对 160 { 161 asdfasdfasdf: {'user':'asdf','pws':'asdf'} 162 163 } 164 165 166 5. Ajax操作 167 # 168 169 $.ajax({ 170 url: '/aj/', # 提交地址 171 type: "POST", # 提交方式 172 data: {uuu: u, ppp:p}, # 提交数据 173 dataType: "JSON", 174 success:function (data) { # 回调函数,登录成功后自动执行 175 # 将字典形式的字符串,发序列化成为字典对象(json对象) 176 # var data_dict = JSON.parse(data); 177 178 if(data_dict.status){ 179 location.href = "/home/" 180 }else{ 181 alert(data_dict.error); 182 } 183 } 184 })
1 作业: 主机管理 2 3 1. 主机表(FK),业务线表 4 2. 用户表(M2M), 用户主机关系表 5 3. 功能: 6 a. Ajax登录 7 b. 8 主机表(主机信息+业务线信息) 9 c. *** 10 当前用户管理的所有主机表(主机信息+业务线信息) 11 12 d. 业务线管理(增、修改、删除) 13 - 对话框 14 - 新URL