Django 特定URL调用

Django 特定URL调用,django,Django,当我从URL.py调用任何URL时,只返回前一个URL的结果。就像我调用第二个URL名称='test'或name='detail',它将只返回第一个URL名称='list',而不是我想要的 urlpatterns = [ url(r'',views.SchoolListView.as_view(),name = 'list'), url(r'',views.TestView.as_view(), name = 'test'), url(r'^(?P<pk>[-\w]+)/$', v

当我从URL.py调用任何URL时,只返回前一个URL的结果。就像我调用第二个URL名称='test'或name='detail',它将只返回第一个URL名称='list',而不是我想要的

urlpatterns = [
url(r'',views.SchoolListView.as_view(),name = 'list'),
url(r'',views.TestView.as_view(), name  = 'test'),
url(r'^(?P<pk>[-\w]+)/$', views.SchoolDetailView.as_view(),name = 'detail'),
urlpatterns=[
url(r“”,views.SchoolListView.as_view(),name='list'),
url(r“”,views.TestView.as_view(),name='test'),
url(r'^(?P[-\w]+)/$,views.SchoolDetailView.as_view(),name='detail'),

]

您不能有3个相同的url模式,您需要更改模式,以便指定要调用的视图:

urlpatterns = [
  url(r'^$',views.SchoolListView.as_view(),name = 'list'),
  url(r'^/test$',views.TestView.as_view(), name  = 'test'),
  url(r'^/detail/(?P<pk>[-\w]+)/$', views.SchoolDetailView.as_view(),name = 'detail'),
]
urlpatterns=[
url(r'^$',views.SchoolListView.as_view(),name='list'),
url(r'^/test$',views.TestView.as_view(),name='test'),
url(r'^/detail/(?P[-\w]+)/$”,views.SchoolDetailView.as_view(),name='detail'),
]
但我不建议使用url(),因为它很快就会被弃用:

url(regex,view,kwargs=None,name=None)此函数是的别名 django.url.re_path()。它很可能在将来被弃用 释放

urlpatterns=[
url(r'^list/$',views.SchoolListView.as_view(),name='list'),
url(r“”,views.TestView.as_view(),name='test'),
url(r'^(?P[-\w]+)/$,views.SchoolDetailView.as_view(),name='detail'),
]
实际上,它需要一个空白或斜杠在URL的时间。
当有人点击一个URL时,它会再次转到第一个URL
斜杠或空白值,当其具有除
我会把它砍掉的。

现在你基本上有3个相同的url模式(在本例中是
/
),所以它将得到它匹配的第一个,你需要使其他2个模式不同Jango开始从上到下匹配url,因此你没有指定任何url模式,Django总是匹配第一个。我认为,在这种情况下,Django始终与第一个匹配。因为第一个模式包含您在此之后指定的所有模式,我认为您应该重新排列第一个url的添加
r'^&'
,它将只匹配空url。不,终止符是
$
而不是
%
。谢谢您的建议,我没有使用url()(主要是路径)在很长一段时间里,所以忘记了它的正则表达式
urlpatterns = [
url(r'^list/$',views.SchoolListView.as_view(),name = 'list'),
url(r'',views.TestView.as_view(), name  = 'test'),
url(r'^(?P<pk>[-\w]+)/$', views.SchoolDetailView.as_view(),name = 'detail'),
]

actually it takes one blank or slash in URL at a time.
when someone hits a URL it goes again to the first 
slash or blank value when it has any other value except 
slash it will go to it.