Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-URL配置_Django_Django Urls - Fatal编程技术网

Django-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

这里有一些我想问的问题,如果我尝试这个代码,我可以进入登录页面,但我的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')]
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”,如果不是,它将转到下一个路径,即“”。等等