4

Django のコメント フォームをカスタマイズしようとしています。内部では、すべてのフィールド フォームがから継承django.contrib.comments.formsされた クラス で宣言されていることに気付きました。次に、テンプレートタグを書くと、ハニーポットフィールドを継承するクラスが呼び出されると思います。CommentDetailFormCommentSecurityForm{% get_comment_form for order as form %}CommentFormCommentDetailForm

コメント フォームをカスタマイズして、コメント フィールドのみを表示する (オプションの名前、電子メール、または URL フィールドは表示しない) ようにしました。これらの情報は、現在ログインしているユーザーによって提供されます。UserProfile.user_type実際、特定の(UserProfileへの外部キーがある) を持つログイン ユーザーのみUserがコメントを許可されます。

これを達成するためのヒントはありますか?Django のコメントのソース コードを見ると、もう怖くなります (笑)。

編集:

これまでのコメント テンプレートの外観は次のとおりです。

{% get_comment_form for order as form %}
    <form action = "{% comment_form_target %}" method = "post">
        {% csrf_token %}
        {{ form }}
        <input type = "submit" name = "submit" value = "Post">
    </form>

で、サイトはこんな感じ

NameEmail address、およびを隠したいURL

4

1 に答える 1

3

テンプレートでこれらすべてを実行できるはずです。

{% ifequal User.profile.user_type "comment_type" %}
{% get_comment_form for order as form %}
  <form action="{% comment_form_target %}" method="post">
    {% csrf_token %}
    {% for field in form %}
    {% ifequal field.name "name" %}
        <input id="id_name" type="hidden" name="name" value="{{ user.username }}" />
    {% else %}{% ifequal field.name "email" %}
        <input type="hidden" name="email" value="{{ user.email }}" id="id_email" />
    {% else %}{{ field }}{% endifequal %}{% endifequal %}
    {% endfor %}    
        <input type="submit" name="submit" value="Post">
  </form>
{% endifequal %}
于 2012-03-27T04:09:15.473 に答える