0

我刚开始研究 Django 内置的评论功能。起初我认为评论模板应该在任何页面上都可以正常工作,只要使用get_comment_formrender_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 视为空白页面。如果您可以使用内置评论框架显示评论表单,那么您可以添加任何您想要的代码。

顺便说一句,我尝试了以下方法:

{% load comments %}
{% render_comment_form for profile %} 

然后它会提示一条错误消息。与我之前的问题相同的回溯。点击这里

4

1 回答 1

0

你不能。评论框架需要一个对象来引用。

但是想到的一个简单的解决方案是构建一个映射到 URL 的模型,如下所示:

class CommentAnchor(models.Model):
    path = models.CharField(max_length=256)

构建一个上下文处理器来构建这些对象并将它们添加到所有模板上下文中。请记住将您的上下文处理器添加到您的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 %} 
于 2013-01-25T04:46:33.167 回答