1. 程式人生 > 遊戲 >謀殺懸疑片《利刃出鞘2》角色海報公佈 12月23日上線

謀殺懸疑片《利刃出鞘2》角色海報公佈 12月23日上線

django請求生命週期流程圖

特別注意:WSGI是協議,而wsgiref與uwsgi是基於WSGI協議實現的功能

django路由層

1.路由匹配

	django2.x及以上	path第一個引數寫什麼就匹配什麼
 	django1.x		  第一個引數是正則表示式
   無論什麼版本django都自帶加斜槓字尾的功能,也可以取消
	配置檔案中 APPEND_ALSSH=False

      

2.轉換器

正常情況下很多網站都會有很多相似的網址,如果我們每一個都單獨開設路由不合理
    django2.x及以上版本路由由動態匹配的轉換器(5種)
    	str:匹配除路徑分隔符外的任何非空字串
   		int:匹配0或者任意正整數
       slug:匹配任意一個有字母或者資料組成的字串
       uuid:匹配格式化後的uuid
       path:能夠匹配完成url路徑
    ps:還支援自定義轉換(自己寫正則表示式匹配更加細化的內容)
 # 轉化器,將對應位置匹配到資料轉換成固定的資料型別
 path('inner/<str:info>', views.inner)
 # inner(實參:request物件,實參:info='轉換器匹配到的型別轉換之後的內容')
注意:這裡是關鍵字傳參:str後面的什麼名字,對應在views函式的實參就要寫什麼名字
對應函式引數寫法
	def inner(request, info):
        return HttpResponse('這裡是inner頁面') 
 
path('index/<str:info>/<int:id>/', views.index_func)  # index_func(實參request物件,info='轉換器匹配到的型別轉換之後的內容',id='轉換器匹配到的型別轉換之後的內容')     
對應函式引數寫法:
    def inner(request, info, id):
        return HttpResponse('這裡是inner頁面')   

3.正則匹配

django2.x及以上版本有re_path 第一個引數是正則
	匹配的本事是隻要第一個正則表示式能夠從使用者資料的路由中匹配到資料就算匹配成功,會立刻停止路由層其他的匹配直接執行對應的檢視函式

from django.urls import path,re_path
	re_path('text',views.text),

    re_path('textadb', views.textadb)
可以修改為:
		re_path('^text/$',views.text),		^表示開始,$表示結束

    	re_path('^textadb/$', views.textadb)
" 注意:這裡是不需要額外傳參的"
 django1.x路由匹配使用的url() 功能與django2.x以及以上的re_path()一致

4.正則匹配的無名與有名分組

無名分組
	 re_path('^text/(\d{4})', views.text)
  "表示匹配已text開頭,再匹配4個數字"這個時候括號內正則匹配到的內容會被當做位置引數傳遞給檢視函式
程式碼如下:
    def text(request,aaa):  # 這裡的形參是什麼名字無所謂,按照位置傳參
    print(aaa)          # 2131
    return HttpResponse('這裡是text')

有名分組:
    re_path('^text/(?P<id>\d{4})', views.text)
    "同樣表示匹配text開頭,再匹配4個數字,但是起了個名字id"這樣會將括號內正則匹配到的內容當做關鍵字引數傳遞給檢視函式
    
程式碼如下:
    def text(request, id):		# 如果引數寫的不是id會報錯,關鍵字傳參
    print(id)  # 2131
    return HttpResponse('這裡是text')

反向解析

通過一個名字可以反向解析出一個結果,該結果可以訪問到某個對應的路由

基本使用
	1.路由匹配關係起別名
    	path('text/', views.text, name='text_func')
    這樣在前端頁面使用的時候,就可以直接使用別名
   2.反向解析語法
		html頁面上模板語法{% url 'text_func' %}
    	後端語法		reverse('text_func')

動態路由的反向解析

path('text/<str:others>/', views.text, name='text_func')

html頁面上的模板語法:
    {% url 'text_func' 'jason'%}		需要指定動態部分的內容
後端語法:
   reverse('text_func',args=('嘿嘿嘿'))	同樣也需要指定動態部分的內容