Django threadcomments - 我如何回复评论?

时间:2011-05-11 08:29:41

标签: django threaded-comments

我正在尝试将threadedcommetns集成到我的Django应用程序中,并且无法理解它是如何工作的。以下是我的模板的外观(基于tutorial中的示例):

<h3>Comments on This Post:</h3>
{% get_threaded_comment_tree for post as tree %}
{% for comment in tree %}
    <div style="margin-left: {{ comment.depth }}em;" class="comment">
        {% link_to_profile comment.user %}
        {% auto_transform_markup comment %}
    </div>
{% endfor %}
<p>Reply to Original:</p>
<form method="POST" action="{% get_comment_url post %}">
    {% csrf_token %}
    <ul>
        {% get_threaded_comment_form as form %}
        {{ form.as_ul }}
        <li><input type="submit" value="Submit Comment" /></li>
    </ul>
</form>

那么,如果这些是线程评论,我如何回复某人已经留下的评论?形式在哪里?我只设法得到Reply to Original表单,但是这样,评论根本没有线程。

我非常感谢你的帮助。

P.S。实际上,我对这个应用程序如何与django 1.3一起工作并不是很满意,所以建议一个替代方案也是一个很好的答案。

4 个答案:

答案 0 :(得分:6)

似乎django threadedcommetns在这里不是很受欢迎:)

我找到了一个很棒的图书馆:django-mptt

这是我的教程,它描述了如何使用django-mptt在django中实现线程注释:http://codeblogging.net/blogs/1/3/

答案 1 :(得分:3)

表单中有一个“id_parent”div,将值更改为父级的id。

使用jQuery之类的东西:

$('#commentForm').find("#id_parent").attr("value", divid);

答案 2 :(得分:1)

您对原件的回复看起来不错。

<form method="POST" action="{% get_comment_url post %}">
    {% csrf_token %}
    <ul>
        {% get_threaded_comment_form as form %}
        {{ form.as_ul }}
        <li><input type="submit" value="Submit Comment" /></li>
    </ul>
</form>

假设您要为每条评论保留回复表格,并将其保留为线索。

<div class="bulk">
    {% get_threaded_comment_tree for post as tree %}
        {% for comment in tree %}
            <div style="margin-left:{{comment.depth}}em;">
                {{comment}}
                Reply to this comment
                <form action="{% get_comment_url post comment %}" method="POST">
                    <ul>
                        {% get_threaded_comment_form as form %}
                        {{ form.as_ul }}
                        <li><input type="submit" value="Submit Reply" /></li>
                    </ul>
                </form>
            </div>
        {% endfor %}
</div>

在这里,我们渲染评论树并在每个评论下面留下一个表格,以便回复该特定评论。此表单的帖子网址设为{% get_comment_url post comment %}。这是我们在问题中描述的所有内容之外的唯一变化。所有这个模板标签都说是做了一个帖子,但也为回复设置了父级。答复的父级是您要回复的{{comment}}

因此,如果您想要“回复原始内容”,请使用{% get_comment_url post %}

如果您想回复特定评论,请使用{% get_comment_url post comment %}

答案 3 :(得分:0)

一个明智的选择:如果您是Django(或编码)的新手,并且正在为演示或学习目的而构建简单的内容,请不要使用线程注释。这比价值还多。只需自己构建一个简单的注释模型。话虽如此,这就是我得到工作答复的方式,与@akshar的答复非常相似。

list.html:

In [38]: ord('☃')
Out[38]: 9731