django 之知识点总结以及Form组件
一、model常用操作
1、13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),count,first,last,esits(判断是否存在)
需要掌握的all、values、values_list
- all:打印的是一个QuerySet集合,一个列表里面放的对象
- values:是一个字典形式
- values_list:是一个元组形式
all的性能是最低的
2、only和defer
| 1 2 3 4 5 6 7 8 9 10 | datalist = models.Userinfo.objects.all().only("name","email") #拿到的还是一个QuerySet集合,仅仅取name和email for item in datalist: print(item.id) print(item.name) print(item.pwd) #只要表里有这个字段,一样会取到值,额外的会再发一次请求 datalist = models.Userinfo.objects.all().defer("name","email") #阻止,不取name和email for item in datalist: print(item.id) print(item.pwd) |
注意:用only的话就去取only里面的字段,取其它的字段效率太低了,尽可能的少的连接数据库
3、路由系统
反向生成URL:
有两种方式:{% url “a1” %}
reverse(“a1”)
用reverse需要导入: from django.core.urlresolvers import reverse
| 1 2 3 4 5 6 7 8 9 10 11 | /index/ func name=a1 {% url "a1"} reverse('a1') /index/(\d+)/ func name=a2 {% url "a2" 11 %} reverse('a2',args=(11,)) /index/(?P<nid>\d+)/ func name=a3 {% url "a2" nid=11 %} reverse('a3',kwargs={'nid':11}) |
| 1 2 3 4 5 6 7 8 9 | def index(request): if request.method == "POST": """ 两个return是一样的,用url反向解析就相当于下面的路径在urls里面 协商别名name="index",但在模板中还是要用{%url"index"%} """ # return redirect(reverse(index)) return redirect("index.html") # 跳转到个人主页 return render(request, "hh.html") |
4、Django的生命周期
web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)
- 首先走wsgi模块,这个模块也是一个协议,包括wsgiref和uwsgi
- 然后路由分配---------views视图
- 从数据库取数据--------渲染到HTML
二、form组件
1、Form组件介绍
Form组件可以做的几件事情:
1、用户请求数据验证
2、自动生成错误信息
3、打包用户提交的正确信息
4、如果其中有一个错误了,其他的正确这,保留上次输入的内容
4、自动创建input标签并可以设置样式
2、Form组件的使用
1、创建规则
| 1 2 3 4 5 | class Foo(Form) # 必须继承 username = XXX password = XXX email = XXX 注意这里的字段必须和input字段一致 |
2、数据和规则进行匹配
先导入view.py
| 1 2 3 | from django.forms import Form from django.forms import fields from django.forms import widgets |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |