我正在用Django制作一个简单的博客应用程序作为学习练习。我可以添加帖子,在首页上看到它们,所以到目前为止它正在工作。我遇到问题的地方是创建一个视图,在单独的页面上显示整个帖子。我想单击标题,然后转到具有标题和正文的 url/post/primary 键的页面。当我点击链接时,我得到一个只有基础.html的页面。不确定我在哪里遗漏了什么,这里有 urls.py、views.py 和帖子.html:
urls.py 从 django.conf.urls 导入模式, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('blog.views',
url(r'^$', 'frontpage'),
url(r'^post/(d+)/$', 'post'),
)
urlpatterns += patterns('',
url(r'^admin/', include(admin.site.urls)),
)
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, render_to_response
from blog.models import *
views.py
def frontpage(request):
posts = Post.objects.all().order_by("-created")
paginator = Paginator(posts, 5)
page = request.GET.get('page', '1')
try:
posts = paginator.page(page)
except (InvalidPage, EmptyPage):
posts = paginator.page(paginator.num_pages)
return render_to_response("list.html", dict(posts=posts, user=request.user))
def post(request, pk):
"""Single Post"""
post = Post.objects.get(pk = pk)
d = dict(post=post, user=request.user)
return render_to_response("post.html", d)
帖子.html
{% extends "base.html" %}
{% block content %}
<div class ="main">
<ul>
{% for post in posts.object_list %}
<div class = "title">{{ post.title }}</div>
<ul>
<div class="time"> {{ post.created }}</div>
<div class ="body"> {{ post.body|linebreaks }}</div>
</ul>
{% endfor %}
</ul>
</div>
{% endblock %}
提前感谢您的帮助。
我假设page.html
实际上是您在 yoru 代码示例中post.html
???您不再有帖子集合,而只有 1 个帖子
这需要从:(循环浏览您的帖子)
{% extends "base.html" %}
{% block content %}
<div class ="main">
<ul>
{% for post in posts.object_list %}
<div class = "title">{{ post.title }}</div>
<ul>
<div class="time"> {{ post.created }}</div>
<div class ="body"> {{ post.body|linebreaks }}</div>
</ul>
{% endfor %}
</ul>
</div>
{% endblock %}
到类似的东西(只显示您的单个post
):
{% extends "base.html" %}
{% block content %}
<div class ="main">
{{ post.title }}
{{ post.created }}
{{ post.body }}
</div>
{% endblock %}
您必须更改 urls.py 才能转到网址/post/primary key的页面。
urlpatterns = patterns('blog.views', url(r'^$', 'frontpage'), url(r'^post/(?P\d+)/$', 'post'),)