我试图简单地为应用网址提供/headless/
选项,以使其显示不同的模板。
我的project/urls.py
有:
urlpatterns = [
url(r'^datastore/', include('datastore.urls')),
]
我的app/urls.py
有:
app_name = 'datastore'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^datastore/(?P<headless>"headless"{1})/$', views.index,name='index'),
]
我在上面遇到了404错误。
我也尝试过:
url(r'^datastore/(?P<headless>"headless"?)/$',
url(r'^datastore/(?P<headless>\w{1})/$', views.index, name='index'),
url(r'^datastore/(?P<headless>\w+)/$', views.index, name='index'),
答案 0 :(得分:2)
您必须从应用/datastore/
中删除前缀urlpattern
:
app_name = 'datastore'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<headless>"headless"{1})/$', views.index,name='index'),
]
每当Django遇到
include()
时,它就会切断任何部分 URL匹配到该点并将剩余的字符串发送到 包含URLconf以供进一步处理。
因此,项目设置中的网址格式会使用datastore/
前缀。您应该可以通过尝试/datastore/datastore/headless/
来检查是否属于这种情况(这应该适用于您当前的配置)。
但请注意,正则表达式的组合与/datastore/headless/
或/datastore//
匹配(在所有变体中都相同)。这可能不是你想要的。威尔弗里德的回答(这里没有解决真正的问题)向你展示了如何更好地做我认为你打算做的事。
答案 1 :(得分:0)
它可能是你网址上的正则表达式。
如果您需要访问网址:
/数据存储/
/数据存储/无头/
你可以创建两个URL,指向同一个视图。
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^datastore/$', views.index, name='index'),
url(r'^datastore/(?P<headless>(headless))/$', views.index, name='index'),
]
如果您愿意,则无需使用参数。如果你只有无头的可能性。
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^datastore/$', views.index, name='index'),
url(r'^datastore/headless/$', views.index, name='index'),
]