django web问题

django生命周期

1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
请求头和请求体中会包含浏览器的动做(action),这个动做一般为get或者post,体如今url之中.
2. url通过Django中的wsgi,再通过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
一旦其中一条匹配成功就执行对应的视图函数,后面的路由就再也不继续匹配了.
3. 视图函数根据客户端的请求查询相应的数据.返回给Django,而后Django把客户端想要的数据作为一个字符串返回给客户端.
4. 客户端浏览器接收到返回的数据,通过渲染后显示给用户.

cbv模式

urlhtml

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.htmldjango

<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字段校验
相关文章
相关标签/搜索