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字段校驗
相關文章
相關標籤/搜索