使用django1.0 自带的comments快速入门

我现在说的django,版本是1.0以后的,因为我用的是svn版的,内容可能不适用于0.96版。

 

django自带了很多东西(app),都在它的contrib目录下,有的真的是很好很强大的。比如说admin,sites,generic_views等等,当然我下面要说的comments也是很强的,用过的人都知道,没有用过的或者不知道的人也有很多

 

django官网上有一篇针对comments的文章可以借鉴,名字是Using Django's Free Comments,链接是:http://code.djangoproject.com/wiki/UsingFreeComment

 

希望看这篇文章的人先去看看上面的文章打个底。不过我要提醒大家的是,到目前为止,上面的那篇文章还不适应现在的django版本(1.0),因为1.0版的django中已经没有了FreeComments了!!!!,FreeComments已经变成了Comments,这个就像new forms没有了,forms出现了是一样的。

 

 

 

未完待续。。。

 

2008-10-11 12:38:41 增加

一、首先在INSTALLED_APPS增加

INSTALLED_APPS = (
    ......
    'django.contrib.comments',

)

二、增加之后,注意更新你的数据库执行: manage.py syncdb

 

三、然后在urls.py中增加:

    # user django comments system   
    (r'^comments/', include('django.contrib.comments.urls')),

 

四、修改你的模板.

以blog为例,假设你的blog的models定义中储存文章的类是Entry:

例如blog/models.py

  1. class Entry(models.Model):
  2.     title         = models.CharField(max_length=200)
  3.     pub_date      = models.DateTimeField('date published',default='2008-10-09',blank=True)
  4.     content       = models.TextField()

那么,你的view如何显示呢,我用通用views吧,就是generic_view,这样显示单个blog的时候就是渲染blog模板中的blog/entry_detail.html

 

在你的blog/entry_detail.html,可以这样用comments:

 

1.加载comments的tags:

{% load comments %}

 

2.显示与客户访问的单篇blog相关的comments.下面给出我的blog/entry_detail.html模板吧,这样好说明一些:

 

  1. {% extends "base.html" %}
  2. {% load comments %}
  3. {% block title %}Blog - {{ object.title|escape }}{% endblock %}
  4. {% block content %}
  5. <h1>{{ object.title|escape }}</h1>
  6. <dl>
  7. <dt>Posted On:{{ object.pub_date|date:"F j, Y" }}</dt>
  8. <dd>Tags:
  9. {% for tag in object.tags.all %}
  10. <a href="{{ tag.get_absolute_url }}">{{ tag.name }}</a>{% if not forloop.last %}, {% endif %}
  11. {% endfor %}
  12. </dd>
  13. </dl>
  14. <div class="opt">
  15. <div><pre>
  16.     {{ object.content|escape|linebreaks }}
  17. </pre></div>
  18. {% get_comment_count for object as comment_count %}
  19. <div class="editUsr" align="right">(责任编辑:#)</div>
  20. <div class="clearBOX"> </div>
  21. <div class="newsComment">[<a href=""#send"" target="_blank">我来说两句</a><span id="commentAllCountin">({{ comment_count }}条)</span>]</div>
  22. </div>
  23. <div class='more'>类别:<a href="" title="查看该分类中所有文章">python & django & gae</a>
  24. <a title="将此文章添加到搜藏" href="/cang/add" onClick="return addToFavor();" target="_blank">添加到搜藏</a>
  25. | 浏览(<span id="result"></span>)
  26. </div>
  27. <div style="height:5px;line-height:5px;"> </div>
  28. <div id="in_nav">
  29. 上一篇:<a href="before" title="">比这新的信息 </a>     
  30. 下一篇:<a href="after"  title="">比这 </a>
  31. </div>
  32. </div>
  33. {% endblock %}

注意上面的代码:

{% get_comment_count for object as comment_count %}这一句是取出该object(就是客户访问的blog)的评论数,并赋值给comment_count这个参数,在后面,({{ comment_count }}条)中就使用了这个变量.

 

 

如果该篇blog有评论了,你要显示它们,该如何做呢,请在模板中用下面的代码:

{% get_comment_list for object as comment_list %}
{% for comment in comment_list %}
<p>{{comment.user_name}}:{{comment.comment}}</p>
{% endfor %}

 

 

如果你想给用户显示一个添加评论的form表单,就在模板中这样做:

<div id='commentform'>
    <h2>发表你的评论:</h2>
    {% render_comment_form for object %}
</div>

 

如果你需要客户必须登录才能显示该发布评论的表单,你就要这样做:

{% if user.is_authenticated %}
     <h2>发表你的评论:</h2>
    {% render_comment_form for object %}
{% else %}
            您好,朋友,请 <a href="/accounts/login/">登录</a> ,或者 <a href="/accounts/register/">注册</a>后,再发表评论
{% endif %}

 

以上代码我在xp上测试通过。使用的是django 1.0的版本。给大家一个参考吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值