私は最近、Ofri が言及したソリューションを実装しました。これは、コメントに孤立した「コメント」フィールドのみを受け入れたかったからです (SO のように、「名前」、「電子メール」、「URL」はありません)。
デフォルトのコメント フォームとリスト表示をカスタマイズするために、ルートの「templates」ディレクトリに「comments」ディレクトリを作成し、2 つのデフォルトのコメント テンプレートをオーバーライドしました。
私の「/templates/comments/form.html」は次のとおりです。
{% load comments i18n %}
{% if user.is_authenticated %}
<form action="{% comment_form_target %}" method="post">
{% csrf_token %}
{% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %}
{% for field in form %}
{% if field.is_hidden %}
{{ field }}
{% else %}
{% if field.name != "name" and field.name != "email" and field.name != "url" %}
{% if field.errors %}{{ field.errors }}{% endif %}
<p {% if field.errors %} class="error"{% endif %} {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
{{ field }}
</p>
{% endif %}
{% endif %}
{% endfor %}
<input type="submit" name="post" class="submit-post" value="{% trans "Add Comment" %}" />
</form>
{% else %}
I'm sorry, but you must be <a href="javascript:alert('send to login page')">logged in</a> to submit comments.
{% endif %}
これは、デフォルトのコメント フォームとわずかに異なるだけで、主に不要な「名前」、「電子メール」、および「URL」入力の表示を抑制します。
私の「/templates/comments/list.html」は次のとおりです。
<div class="comment_start"></div>
{% for comment in comment_list %}
<div class="comment">
{{ comment.comment }}
(from <a href="javascript:alert('show user profile/stats')">{{ comment.user }}</a> - {{ comment.submit_date|timesince }} ago)
</div>
{% endfor %}
フォームが必要なページで、最初に呼び出し{% load comments %}
、次に{% render_comment_form for [object] %
} を呼び出してフォームを表示するか{% render_comment_list for [object] %}
、オブジェクトに関するコメントのリストを生成します ([オブジェクト] を適切なオブジェクト名に置き換えます)。
これは私にとってはうまく機能しており、django コメントに付属する他のすべての「無料」のもの (モデレーション、フラグ、フィード、ポリモーフィックな関連付けなど) を引き続き提供しています。