基础Django,如何为博客的DetailView文章编写URLConf?

4

我是Django的新手,我在mysite目录下为我的博客应用程序编写URLConf的正确代码遇到了问题。博客显示在http://127.0.0.1:8000/blog/,但我无法使用超链接在博客中DetailView帖子。

我得到的错误是:

"使用在mysite.urls中定义的URLconf,Django按照以下顺序尝试这些URL模式:

  1. ^blog/ ^$
  2. ^blog/ ^(blog/?P\d+)/$
  3. ^admin/ 当前URL“blog/3”与其中任何一个都不匹配。"

我的mysite\blog\url.py文件如下:

from django.conf.urls import patterns, include, url
from django.views.generic import ListView,DetailView
from blog.models import Post

urlpatterns=patterns('',
                     url(r'^$',ListView.as_view(
                         queryset=Post.objects.all().order_by("-date")[:10],
                         template_name="blog.html")),
                     url(r'^(blog/?P<post_id>\d+)/$', DetailView.as_view(
                         model = Post,
                         template_name = "post.html")),                    
)

我该如何在我的博客应用程序中为帖子显示DetailView?我有博客、基本和post.html的模板文件。post.html如下所示:
{%extends "base.html"%}
{%block content%}


<h3><a href="/blog/{{post.id}}">{{post.title}}</a></h3>
<div class ="post_meta">
    on {{post.date}}
</div>

<div class = "post_body">
{{post.body|safe}}
</div>

{% endblock %}
1个回答

1
您的URLConf没有正确地在模板中调用URL。
url(r'^(blog/?P<post_id>\d+)/$',

...正在尝试获取一个像www.yoursite.com/blog/(blog/post_id/这样的url,其中/(blog是url的一部分。首先,在主URLConf中包含yourapp.urls时,已经包含了/blog/。其次,你的(位置不正确。

尝试将其更改为:

url(r'^(?P<post_id>\d+)/$',....rest of your URLConf....

你能帮忙修改路径的语法吗?例如:这个不起作用:path(r'(?P<pk>\d+)', DetailView.as_view(model=Post, template_name='blog/post.html'))] - Compoot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接