Django-URL配置
这里有一些我想问的问题,如果我尝试这个代码,我可以进入登录页面,但我的url看起来像这样Django-URL配置,django,django-urls,Django,Django Urls,这里有一些我想问的问题,如果我尝试这个代码,我可以进入登录页面,但我的url看起来像这样http://127.0.0.1:8000/%2Flogin/。这是什么%2F urlpatterns = [ path("", views.index, name="index"), path("<str:slug>", views.redirect, name='redirect'), path('/login/', views.logIn, name='login')] urlpatter
http://127.0.0.1:8000/%2Flogin/
。这是什么%2F
urlpatterns = [
path("", views.index, name="index"),
path("<str:slug>", views.redirect, name='redirect'),
path('/login/', views.logIn, name='login')]
urlpatterns=[
路径(“,views.index,name=“index”),
路径(“,views.redirect,name='redirect'),
路径('/login/',views.login,name='login')]
当我从登录url中删除斜杠时,会收到一条错误消息
找不到页面(404)请求方法:获取请求URL:
删除斜杠后,下面是代码
urlpatterns = [
path("", views.index, name="index"),
path("<str:slug>", views.redirect, name='redirect'),
path('login', views.logIn, name='login')]
urlpatterns=[
路径(“,views.index,name=“index”),
路径(“,views.redirect,name='redirect'),
路径('login',views.login,name='login')]
所以,我想知道的是,为什么斜杠会影响登录的url,而不是
试试这个:
urlpatterns = [
path("login/", views.logIn, name='login'),
path("<str:slug>/", views.redirect, name='redirect'),
path("", views.index, name="index")
]
urlpatterns=[
路径(“login/”,views.login,name='login'),
路径(“/”,views.redirect,name='redirect'),
路径(“,views.index,name=“index”)
]
条目的顺序很重要,并且总是添加一个尾随的
/
,除非您有类似根的视图。索引%2F
是编码的url字符/
,浏览器将自动编码/解码它。它工作,但我想知道,如果我添加了一个新的网址,它应该是以上登录网址或在最后。这取决于新的网址。根据经验,如果您硬编码一个字符串,比如“login/”,那么它应该出现在任何需要字符串(比如)的路径之前。因为对于Django,如果在顶部,“login/”将符合该标准。因此,它会将“登录”当作一个slug,并使用“views.redirect”。现在“login/”在slug之前,它将首先检查字符串是否为“login”,如果不是,它将转到下一个路径,即“”。等等