Django 1.11 url模式错误,如何解决?

问题描述 投票:1回答:1

当我尝试修复我的urlpatterns中的网址时,它显示了我的错误:

错误:

您的网址格式“url(r'^ player / [?P [ - \ w \ x20] +] / $',PlayerDetailView.as_view(),name ='player-detail-view'),”无效。确保urlpatterns是url()实例的列表。尝试删除字符串'url(r'^ player / [?P [ - \ w \ x20] +] / $',PlayerDetailView.as_view(),name ='player-detail-view'),'。 urlpatterns列表不应该有前缀字符串作为第一个元素。*

我的代码:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', HomePageView.as_view(), name='home-page'),
    url(r'^teams/$', TeamsListView.as_view(), name='teams-list-view'),
    url(r'^scores/$', ScoresListView.as_view(), name='scores-list-view'),
    url(r'^player/[?P<slug>[-\w\x20]+]/$', PlayerDetailView.as_view(), name='player-detail-view'),
]

谁能帮我??

python regex django
1个回答
1
投票

语法有点偏,您需要在“捕获组”周围使用圆括号(..)而不是方括号[..]

url(
    r'^player/(?P<slug>[-\w\x20]+)/$',
    PlayerDetailView.as_view(),
    name='player-detail-view'
),

此外,如果我没记错,一个slug不能包含空格,所以你可能想删除\x20

请注意,在及更高版本中,可以使用path(..) [Django-doc]函数,它支持slug,如:

# Django 2.0 and higher

path('player/<slug:slug>/', PlayerDetailView.as_view(), name='player-detail-view'),

然后Django用内置模式替换了slug,这使得URL模式更具“声明性”。

© www.soinside.com 2019 - 2024. All rights reserved.