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了,不會去做添加斜杠的操作