zoukankan      html  css  js  c++  java
  • django web问题

    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字段校验
  • 相关阅读:
    转载:Package by feature, not layer
    [翻译][架构设计]The Clean Architecture
    消息处理管道
    Pool:小对象缓存or复用
    View事件分发
    动静分离-前后端分离部署
    MySQL 执行计划中Extra的浅薄理解
    探索java世界中的日志奥秘
    记一次转不过弯的递归
    Spring MVC
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/11681044.html
Copyright © 2011-2022 走看看