我一直在尝试编写一个简单的应用程序,并遇到了这个奇怪的问题。请看下面,我的urls.py,首先:
这是我的urls.py文件:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^(?P<label_slug>[\w-]+)/$', views.tasks, name='tasks'),
url(r'^add-label/$', views.add_label, name='add_label'), # this URL is acting funny
url(r'(?P<label_slug>[\w\-]+)/add_task/$', views.add_task, name='add_task'),
]
所以每当我访问我的第三个网址(/ add)时,它都会进入404错误页面,但是当我添加像label / add这样的东西时,它似乎有效。有人能告诉我如何解决这个问题吗?
这就是404错误页面所说的内容:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/tasks/add/
Raised by: tasks.views.tasks
No TaskLabel matches the given query.
答案 0 :(得分:2)
您的网址'^(?P<label_slug>[\w-]+)/$'
正在考虑/add-label
认为它是一个任务的slu and并调用视图tasks.views.tasks
作为一种好的做法,您应该始终将更通用的正则表达式URL放在底部,因为URL按此顺序进行评估
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^add-label/$', views.add_label, name='add_label'),
url(r'^(?P<label_slug>[\w-]+)/$', views.tasks, name='tasks'),
url(r'(?P<label_slug>[\w\-]+)/add_task/$', views.add_task, name='add_task'),
]