新创建的Django url不起作用

2024-09-30 22:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

新创建的Django url没有警告。我不明白为什么这些新网址不起作用。我创建了视图和模板,然后将它们添加到我的url中,得到以下错误

Request Method: GET
Request URL:    http://localhost:8000/posts/dcma/
Raised by:  posts.views.post_detail

我不明白为什么邮政局的细节会引起问题。在

这是我的帖子/网址

^{pr2}$

我的观点

def display_hay(request):
all_results = SearchQuerySet().all()
template = "posts/display_hay.html"
context = {
    "all_results": all_results,
}
return render(request, template, context)


  def submit_video(request):
   template = "posts/submit_video.html"
   context = {
   }
   return render(request, template, context)


   def privacy(request):
   template = "posts/privacy.html"
   context = {
   }
   return render(request, template, context)


  def terms(request):
   template = "posts/terms.html"
   context = {
   }
   return render(request, template, context)


  def dcma(request):
   template = "posts/dcma.html"
   context = {
   }
   return render(request, template, context)

如何更正语法?欢迎一切指导


Tags: urlreturnrequestdefhtmldisplaycontexttemplate
2条回答

Django按照定义的顺序尝试url,并使用第一个匹配项。在本例中,您有以下URL:

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

url(r'^submit_video/$', submit_video, name='submit_video'),
url(r'^privacy/$', privacy, name='privacy'),
url(r'^terms/$', terms, name='terms'),
url(r'^dcma/$', dcma, name='dcma'),

后一个url中的任何一个也由post_detail视图的url模式匹配。然后,post_detail视图尝试查找与slug匹配的post,但找不到,并引发一个Http404。当第一个匹配的视图引发错误时,不会调用其他模式的视图。在

要解决这个问题,您可以做两件事之一。要么更改post_detail的url模式,使其与其他模式不冲突,要么将最后四个模式上移到post_detail模式之上。在后一种情况下,不能使用任何冲突的url作为post的slug。在

我想出来了。我不知道为什么被否决了。但是问题是由url的顺序引起的,所以不是这样

urlpatterns = [
  url(r'^$', post_list, name='list'),
  url(r'^create/$', post_create, name='create'),
  url(r'^haystack/$', display_hay, name='haystack'),
  url(r'^search_f/$', search_title),
  url(r'^search_results/$', post_search, name='search-page'),
  url(r'^tag/(?P<slug>[\w-]+)/$', tag_list, name="tag_list"),
  url(r'^(?P<slug>[\w-]+)/$', post_detail, name='detail'),
  url(r'^(?P<slug>[\w-]+)/edit/$', post_update, name='update'),
  url(r'^(?P<id>\d+)/delete/$', post_delete, name='delete'),

  url(r'^submit_video/$', submit_video, name='submit_video'),
  url(r'^privacy/$', privacy, name='privacy'),
  url(r'^terms/$', terms, name='terms'),
  url(r'^dcma/$', dcma, name='dcma'),
# url(r'^search/', include('haystack.urls')),

是这个

^{pr2}$

相关问题 更多 >