我想实现以下行为
所以在主urls.py中我有以下设置
urlpatterns = [
url(r"^", include("myapp.urls")),
url(r"^admin/", include(admin.urls)),
]
和myapp urls.py
urlpatterns = [
url(r'$', "myapp.views.index"),
url(r'myview/$', "myapp.views.myview")
]
但两个链接都执行索引视图,myview永远不会执行。我错过了什么吗?
答案 0 :(得分:1)
请修改您的代码以反映以下
所以在主urls.py
urlpatterns = [
url(r"^$", include("myapp.urls")),
url(r"^admin/", include(admin.urls)),
]
和myapp urls.py
urlpatterns = [
url(r'^$', "myapp.views.index"),
url(r'^myview/$', "myapp.views.myview")
]
它会起作用
答案 1 :(得分:1)
来自Django documentation: URL dispatcher: How Django processes a request:
- Django按顺序遍历每个URL模式,并在第一个匹配请求的URL的位置停止。
醇>
因此,模式的顺序很重要。此外,您的模式过于宽泛。
实际上,正则表达式$
无限匹配,因此它首先匹配索引页。
尝试使用^
之前限制它们:^$
和^myview/$
。
答案 2 :(得分:0)
您应该在应用网址模式的开头添加^
:
urlpatterns = [
url(r'^$', "myapp.views.index"),
url(r'^myview/$', "myapp.views.myview")
]