django路由——關於路由最后斜杠的問題


1.結尾不帶斜杠

路由文件中配置如下:

urlpatterns = [
    path('demo',views.demo1)
]

啟動服務,這時候訪問地址 http://127.0.0.1:8000/demo

正常訪問

這時候訪問地址http://127.0.0.1:8000/demo/

會報錯404  

因為這里必須嚴格匹配,在路由中配置的結尾沒有 /  如果需要訪問該地址的話,結尾也不能帶有斜杠

 

2.結尾帶斜杠

路由文件中配置如下

urlpatterns = [
    path('demo/',views.demo1)
]

啟動服務,這時候訪問地址http://127.0.0.1:8000/demo

正常訪問  當然如果訪問地址http://127.0.0.1:8000/demo/ 也是能正常訪問的

 

這里就有疑問了,為什么這里結尾沒有加斜杠,沒有嚴格匹配,卻可以正常訪問,而且訪問的時候還自動給這個地址末尾帶了一個/

因為django默認配置有一個設置  

APPEND_SLASH=True

顧名思義,就是自動添加斜杠,這里截圖示例 

 

 圖中清晰的展示了整個過程,在輸入的地址是不帶斜杠的時候,根據django默認的配置,會判斷如果添加了斜杠,會不會訪問到資源,如果加了斜杠能訪問到資源的話,就會重定向到加了斜杠的

地址。  但是如果加了斜杠都無法訪問到資源的話,就不會進行重定向的操作,比如 我這里輸入 127.0.0.1:8000/demo123  再次查看請求過程 如下圖(這里就不會去自動加斜杠了)

 

 

 如果在setting中修改該配置為

APPEND_SLASH=False

這時候再次訪問地址http://127.0.0.1:8000/demo

這里就會直接報錯404了,不會去做添加斜杠的操作

 

 

PS:在自己手動測試的過程中,要記得清理緩存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM