我刚开始研究Django内置注释功能。起初我认为评论模板应该只在 get_comment_form 或 render_comment_form 的任何页面上运行良好。但是现在当我将这些代码添加到普通页面时它真的很烦人。它不起作用。也许换句话说。当它到达普通页面时,我不知道如何指定要附加的对象。以下是详细信息:
models.py
class Entry(models.Model):
title = models.CharField(max_length=250)
body = models.TextField()
pub_date = models.DateTimeField()
enable_comments = models.BooleanField()
urls.py
urlpatterns = patterns('',
url(r'^profile/','django.views.generic.simple.direct_to_template',{
'template' : 'admin_ryu_blog/profile.html'},name='profile'),
)
现在我只想在模板profile.html上使用评论框架。我该怎么办 ?您现在可以将profile.html视为空白页面。然后,如果可以使用内置注释框架显示注释表单,则可以添加所需的任何代码。
btw我尝试过以下方法:
{% load comments %}
{% render_comment_form for profile %}
然后它会提示错误信息。我前一个问题的回溯。 点击here!
答案 0 :(得分:0)
你做不到。注释框架需要引用一个对象。
但是想到一个简单的解决方案就是构建一个映射到URL的模型:
class CommentAnchor(models.Model):
path = models.CharField(max_length=256)
构建一个构建这些对象的context processor并将它们添加到所有模板上下文中。请务必将您的上下文处理器添加到settings.TEMPLATE_CONTEXT_PROCESSORS
,并记住在呈现模板时使用RequestContext
。
def CommentAnchorProcessor(request):
comment_anchor, created = CommentAnchor.objects.get_or_create(path=request.path)
return {
'comment_anchor': comment_anchor, # now, this is available in every template.
}
现在您可以通过这些新对象呈现评论。
{% render_comment_form for comment_anchor %}