一个简单而灵活的线程评论系统。

django-threadedcomments的Python项目详细描述


django threadedcomments

threadedcomments是一个django应用程序,它允许简单地创建一个线程注释系统。 评论者既可以回复原始项目,也可以回复其他评论者。

应用程序(从0.9开始)构建在django_comments(或django.contrib.comments)之上, 这使得它很容易被其他模块扩展。

安装

通过pip安装软件包:

pip install django-threadedcomments

最好在虚拟环境中安装模块。

配置

将以下内容添加到settings.py

INSTALLED_APPS += (
    'threadedcomments',
    'django_comments',
    'django.contrib.sites',
)

COMMENTS_APP = 'threadedcomments'

通过将threadedcomments应用程序放在django.contrib.comments应用程序之上, 占位符comments/list.html模板已被线程视图替换。

确保在urls.py

中配置了django.contrib.comments
urlpatterns += patterns('',
    url(r'^articles/comments/', include('django_comments.urls')),
)

注意

对于较旧的django版本(直到1.6),也可以在INSTALLED_APPS中使用django.contrib.comments。 此软件包使用其中任何一个软件包,具体取决于所安装的软件包。

提供一个显示object注释的模板(例如,文章或博客条目):

{% load threadedcomments_tags %}

...

<h2>Comments for {{ object.title }}:</h2>

{% render_comment_list for object %}
{% render_comment_form for object %}

模板设计

当然,在项目中编写自己的comments/list.html版本是可取的, 或者使用comments/app/list.htmlcomments/app/model/list.html重写之一。

确保也重写comments/base.html,因此django.contrib.comments的其他视图 使用网站设计显示。django.contrib.comments的其他模板是 很简单也很有目的(例如comments/posted.html), 因为这些页面依赖于网站的自定义设计。

有关基本配置,请参见提供的example应用程序, 包括一个基于javascript的回复表单,该表单移动到访问者回复的评论。

模板标记

threadedcomments_tags库是comments库的替换项。 这对于简单的评论是必需的。标签是向前兼容的; 它们支持的语法与django_comments(或django.contrib.comments)提供的语法相同, 他们还增加了一些额外的参数。

获取评论计数:

{% get_comment_count for [object] as [varname] %}
{% get_comment_count for [object] as [varname] root_only %}

{% get_comment_count for [app].[model] [id] as [varname] %}
{% get_comment_count for [app].[model] [id] as [varname] root_only %}

获取评论列表:

{% get_comment_list for [object] as [varname] %}
{% get_comment_list for [object] as [varname] flat %}
{% get_comment_list for [object] as [varname] root_only %}

呈现评论列表:

{% render_comment_list for [object] %}
{% render_comment_list for [object] root_only %}

{% render_comment_list for [app].[model] [id] %}
{% render_comment_list for [app].[model] [id] root_only %}

获取评论表单:

{% get_comment_form for [object] as [varname] %}
{% get_comment_form for [object] as [varname] with [parent_id] %}
{% get_comment_form for [app].[model] [id] as [varname] %}
{% get_comment_form for [app].[model] [id] as [varname] with [parent_id] %}

呈现评论表单:

{% render_comment_form for [object] %}
{% render_comment_form for [object] with [parent_id] %}
{% render_comment_form for [app].[model] [id] %}
{% render_comment_form for [app].[model] [id] with [parent_id] %}

渲染整棵树:

{% for comment in comment_list|fill_tree|annotate_tree %}
    {% ifchanged comment.parent_id %}{% else %}</li>{% endifchanged %}
    {% if not comment.open and not comment.close %}</li>{% endif %}
    {% if comment.open %}<ul>{% endif %}

    <li id="c{{ comment.id }}">
        ...
    {% for close in comment.close %}</li></ul>{% endfor %}
{% endfor %}

分页需要fill_tree过滤器,它确保第一个注释的父级也包括在内。

annotate_tree过滤器将openclose属性添加到注释中。

扩展模块

应用程序构建在标准的django_comments(或django.contrib.comments)框架之上, 它支持各种信号和模板重写以自定义注释。

若要自定义django threadedcomments,请重写适当的模板,或包含提供缺少功能的应用程序。 例如,前端编辑支持是故意省略的。它属于适度和政策的范畴 知道“谁能做什么”。它应该放在一个单独的应用程序中,而不应该放在这个应用程序中,因为它专注于线程。 这同样适用于社交媒体登录、评论订阅、垃圾邮件保护和ajax发布。

请注意,标准框架还支持适度、标记和rss提要。更多文档请访问:

一些值得一看的模块是:

这些模块可以进一步增强评论系统。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven在试图定义模块时不将EJB识别为项目的依赖项   oracle如何将Java SQL数组作为参数传递给JPA本机查询?   Java解析带有整数和字符串的文本文件   客户端的java使用。在CXF Rest客户端中重置   Java:通过ID调用类   java如何在MapBox Android SDK上使用FitBounds?   java sparkjava:从InputStream将PNG作为base64加载   初始化后JScrollPane+JTree显示的java问题   java htmlunit单个测试通过,但在测试套件中运行失败   为什么java常量声明为静态的?   安卓将值从activity传递到fragment给出错误java。lang.NullPointerException   java如何使用POI设置空白excel单元格   javascript Cordova上下左右按钮   java所需字符串“contactID”参数不存在   java NoClassDefFoundError和其他引用Google Maps Android API实用程序时出现的错误   macos用Java代码打开下载的JAR文件   java扩展RoboActivity产生ClassNotFoundException   java如何使用中断通道下载文件?(NIO)