我正在使用本教程http://lightbird.net/dbe/blog.html创建一个简单的博客。 我是django的新手,我在本教程中按照一些步骤遇到问题。 我正在尽我所能去理解,有时我只是不理解它。我尝试获取源代码,但文件已损坏。
我需要解释的步骤是:
帖子页
我们还需要为每个帖子提供一个单独的页面,其中包含访问者的评论 和完整的帖子文本(如果我们以后决定限制显示的帖子身体 首页)。这是我计划如何设置的:网址将是
/blog/post/{pk}/
其中pk
是帖子对象的主键; 模板将被称为post.html
,视图功能将是post()
。主要列表将显示一个简单的链接:
<div class="commentlink"> <a href="{% url blog.views.post post.pk %}">Comments</a> </div>
如果这不是一个合适的问题,我很抱歉。
我接受了帖子页面步骤,我只是不知道该怎么做!
my views.py
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response
from blog.models import *
from django.core.context_processors import csrf
from django.http import Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse
def main(request):
"""Main listing."""
posts = Post.objects.all().order_by("-created")
paginator = Paginator(posts, 2)
try: page = int(request.GET.get("page", '1'))
except ValueError: 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 with comments and a comment form."""
post = Post.objects.get(pk=int(pk))
comments = Comment.objects.filter(post=post)
d = dict(post=post, comments=comments, form=CommentForm(), user=request.user)
d.update(csrf(request))
return render_to_response("post.html", d)
def add_comment(request, pk):
"""Add a new comment."""
p = request.POST
if p.has_key("body") and p["body"]:
author = "Anonymous"
if p["author"]: author = p["author"]
comment = Comment(post=Post.objects.get(pk=pk))
cf = CommentForm(p, instance=comment)
cf.fields["author"].required = False
comment = cf.save(commit=False)
comment.author = author
comment.save()
return HttpResponseRedirect(reverse('blog:add_comment'))
答案 0 :(得分:0)
对于模板:
{% url blog:add_comment id_here %}
视图
return HttpResponseRedirect(reverse('blog:view_name'))
def add_comment(request, pk):
.......
return HttpResponseRedirect(reverse("blog:post", args=[pk]))