2013-01-25 20 views
0

我剛開始學習Django內置註釋功能。起初我認爲評論模板應該可以在任何頁面上正常工作,只需要get_comment_formrender_comment_form。但現在當我將這些代碼添加到普通頁面時,它真的很煩人。它不起作用。也許換句話說。我不知道如何在正常頁面時指定要附加的對象。以下是詳細消息:如何在任何模板上使用Django內置註釋框架

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

然後它提示錯誤消息。在我以前的問題上有同樣的痕跡。 點擊here

回答

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