Django - 评论


在开始之前,请注意,自 1.5 版本以来,Django Comments 框架已被弃用。现在您可以使用外部功能来执行此操作,但如果您仍然想使用它,它仍然包含在版本 1.6 和 1.7 中。从 1.8 版本开始,它不存在,但您仍然可以在不同的 GitHub 帐户上获取代码。

注释框架可以轻松地将注释附加到应用程序中的任何模型。

开始使用 Django 注释框架 -

编辑项目 settings.py 文件并将'django.contrib.sites''django.contrib.comments'添加到 INSTALLED_APPS 选项 -

INSTALLED_APPS += ('django.contrib.sites', 'django.contrib.comments',)

获取站点 ID -

>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'56194498e13823167dd43c64'

设置您在 settings.py 文件中获得的 id -

SITE_ID = u'56194498e13823167dd43c64'

同步数据库,创建所有评论表或集合 -

python manage.py syncdb

将评论应用程序的 URL 添加到项目的 urls.py -

from django.conf.urls import include
url(r'^comments/', include('django.contrib.comments.urls')),

现在我们已经安装了框架,让我们更改 hello 模板以跟踪对 Dreamreal 模型的评论。我们将列出并保存特定 Dreamreal 条目的注释,该条目的名称将作为参数传递给 /myapp/hello URL。

梦幻模型

class Dreamreal(models.Model):

   website = models.CharField(max_length = 50)
   mail = models.CharField(max_length = 50)
   name = models.CharField(max_length = 50)
   phonenumber = models.IntegerField()

   class Meta:
      db_table = "dreamreal"

你好视图

def hello(request, Name):
   today = datetime.datetime.now().date()
   daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
   dreamreal = Dreamreal.objects.get(name = Name)
   return render(request, 'hello.html', locals())

你好.html 模板

{% extends "main_template.html" %}
{% load comments %}
{% block title %}My Hello Page{% endblock %}
{% block content %}

<p>
   Our Dreamreal Entry:
   <p><strong>Name :</strong> {{dreamreal.name}}</p>
   <p><strong>Website :</strong> {{dreamreal.website}}</p>
   <p><strong>Phone :</strong> {{dreamreal.phonenumber}}</p>
   <p><strong>Number of comments :<strong> 
   {% get_comment_count for dreamreal as comment_count %} {{ comment_count }}</p>
   <p>List of comments :</p>
   {% render_comment_list for dreamreal %}
</p>

{% render_comment_form for dreamreal %}
{% endblock %}

最后将 URL 映射到我们的 hello 视图 -

url(r'^hello/(?P<Name>\w+)/', 'hello', name = 'hello'),

现在,

  • 在我们的模板(hello.html)中,使用 - {% load comments %} 加载评论框架

  • 我们获取通过视图传递的 Dreamreal 对象的评论数量 - {% get_comment_count for dreamreal as comment_count %}

  • 我们得到对象的评论列表 - {% render_comment_list for dreamreal %}

  • 我们显示默认的评论表单 - {% render_comment_form for dreamreal %}

当访问 /myapp/hello/steve 时,您将获得名为 Steve 的 Dreamreal 条目的评论信息。访问该 URL 将会得到 -

Django 注释示例

发表评论后,您将被重定向到以下页面 -

评论重定向页面

如果您再次访问 /myapp/hello/steve,您将看到以下页面 -

评论数

可以看到,现在评论数为 1,并且评论列表下方有该评论。