3

我正在尝试将threadedcommetns集成到我的 Django 应用程序中,并且在理解它的工作原理方面遇到了麻烦。这是我的模板的外观(基于教程中的示例):

<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表格,但是这样,评论根本没有线索。

我将非常感谢您的帮助。

PS 实际上,我不太高兴这个应用程序如何与 django 1.3 一起工作,所以建议一个替代方案也是一个很好的答案。

4

4 回答 4

6

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

我找到了一个很棒的库:django-mptt

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

于 2011-05-24T10:44:19.023 回答
3

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

使用 jQuery 是这样的:

$('#commentForm').find("#id_parent").attr("value", divid);
于 2011-10-13T15:48:07.990 回答
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>

在这里,我们呈现评论树并在每个评论下方保留一个表单,允许回复该特定评论。此表单的帖子 url 设置为{% get_comment_url post comment %}. 除了您在问题中描述的所有内容之外,这是我们所做的唯一更改。所有这个模板标签说的是做一个帖子,但也为回复设置一个父级。回复的父母是{{comment}}您要回复的人。

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

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

于 2012-09-02T07:31:46.533 回答
0

给聪明人的一句话:如果您是 Django(或编码)的新手,并且如果您正在构建一些简单的演示或学习目的 - 不要使用线程注释。它的工作比它的价值多。只需自己构建一个简单的评论模型。话虽如此,这就是我得到回复的方式,与@akshar 的回复非常相似。

列表.html:

{% load threadedcomments_tags %}
<div id="comments">
    {% for comment in comment_list|fill_tree|annotate_tree %}
        {% if comment.open %}
            <ul>
        {% else %}
            </li>
        {% endif %}
        <li id="c{{ comment.id }}">{# c## is used by the absolute URL of the Comment model, so keep that as it is. #}
            <dl class="comment">
                <dt>
                    {{ comment.submit_date }} - {{ comment.name }}, ID: {{ comment.id }} <i>To test parent:{{ comment.parent_id }}</i>
                </dt>
                <dd>
                    {{ comment.comment|linebreaks }}
                    {% render_comment_form for object with comment.id %}
                </dd>
            </dl>
            {% for close in comment.close %}</li></ul>{% endfor %}
    {% endfor %}
</div>
于 2018-09-27T14:50:47.947 回答