如何在任何模板上使用Django内置注释框架

时间:2013-01-25 04:30:47

标签: django django-templates django-comments

我刚开始研究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

1 个答案:

答案 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 %}