我正在尝试创建一个博客。该博客的主页将包含有关博客帖子的摘要(按日期排序)。
当用户点击主页上博客帖子的标题时,该帖子的页面应该会打开。
所以我正在努力解决上述问题并遇到一些问题。
以下是post.html
文件的样子(显示完整帖子的文件):
{% extends "base.html" %}
{%block content %}
<div class="mainContent">
<div class = "Content">
<article class = "Typical Article">
<header>
<h3><a href="/blog/{{post.id}}">{{post.title}}.....{{post.id}}</a></h3>
</header>
<footer>
<p class = "postInfo">Sukhvir Notra, {{post.date}}</p>
</footer>
<content>
<p>{{post.summary|safe|linebreaks}}</p>
</content>
</article>
</div>
</div>
{%endblock%}
这是我的app中的urls.py文件:
from django.conf.urls import patterns,include ,url
from django.views.generic import ListView, DetailView
from blog.models import blog
urlpatterns = patterns('',
url(r'^$',ListView.as_view(queryset=blog.objects.all().order_by("-date")[:20],template_name="blog.html")),
url(r'^(?P<pk>\d+)$',DetailView.as_view(model = blog,template_name="post.html")),
url(r'^archives$',ListView.as_view(queryset=blog.objects.all().order_by("-date"),template_name="archives.html")),
url(r'^latestnews$',ListView.as_view(queryset=blog.objects.all().order_by("-date")[:10],template_name="archives.html")),
)
问题是当我点击主页上的标题时,新页面会打开并显示正确的URL(127.0.0.1/blog/1 --- 1是post.id)
但该页面为空白,我在页面上看到的只是.....
。这告诉我{{post.id}},{{post.title}}
变量不能正常工作。
可能导致此问题的原因是什么?
答案 0 :(得分:1)
将网址中的context_object_name设置为您希望对象在模板中拥有的名称。
例如:
url(r'^(?P<pk>\d+)$',DetailView.as_view(model = blog,template_name="post.html", context_object_name="post")),
除非另有说明,否则Django使用名称为object
(对于DetailView)或object_list
(对于ListView)的默认上下文对象。