django生命周期 1 . 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2 . url经过
django生命周期
1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了. 3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端. 4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户.
cbv模式
url
urlpatterns = [ path(‘fbv/‘,views.fbv), path(‘cbv/‘,views.CBV.as_view()), ]
view
from django.views import View class CBV(View): def get(self,request): return render(request, "cbv.html") def post(self,request): return HttpResponse("cbv.get")
cbv.html
<body> <form method="post" action="/cbv/"> {% csrf_token %} <input type="text"> <input type="submit"> </form> </body>
select_related 和 prefetch_related 方法各有什么区别
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能
对于一对一字段(OneToOneField)和外键字段(ForeignKey),可以使用select_related 来对QuerySet进行优化
对于多对多字段(ManyToManyField)和一对多字段,可以使用prefetch_related()来进行优化
django的form功能的好处:
生成html form,form字段校验