Пользователь, не имеющий электронной почты, не может оставлять комментарии, используя структуру комментариев Django

Я form.html шаблон формы form.html рамки комментариев со своим собственным

 {% load comments i18n %} <form action="{% comment_form_target %}" method="post">{% csrf_token %} <div><input type="hidden" name="next" value="{{ request.get_full_path }}" /></div> {% for field in form %} {% if field.is_hidden %} <div>{{ field }}</div> {% else %} {% if field.name != "name" and field.name != "url" and field.name != "email" %} {% if field.errors %}{{ field.errors }}{% endif %} <p {% if field.errors %} class="error"{% endif %} {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %} > {{ field.label_tag }}<br /> {{ field }} </p> {% endif %} {% endif %} {% endfor %} <p class="submit"> <input type="submit" name="post" class="submit-post" value="{% trans "Post" %}" /> </p> </form> 

Он в значительной степени предоставляет только скрытые поля (для безопасности) и поля комментариев. Все comment.user автоматически устанавливается как текущий зарегистрированный пользователь request.user . Вот рендеринг HTML:

 <form action="/comments/post/" method="post"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='bd05094c2e3ba80e1fbec8a4237b132c' /></div> <div><input type="hidden" name="next" value="/doors/orders/1/" /></div> <div><input type="hidden" name="content_type" value="doors.order" id="id_content_type" /></div> <div><input type="hidden" name="object_pk" value="1" id="id_object_pk" /></div> <div><input type="hidden" name="timestamp" value="1333125894" id="id_timestamp" /></div> <div><input type="hidden" name="security_hash" value="c6791aafdd682cd8db5595681073c9a21c5fe7dd" id="id_security_hash" /></div> <p> <label for="id_comment">Comment</label><br /> <textarea id="id_comment" rows="10" cols="40" name="comment"></textarea> </p> <p style="display:none;" > <label for="id_honeypot">If you enter anything in this field your comment will be treated as spam</label><br /> <input type="text" name="honeypot" id="id_honeypot" /> </p> <p class="submit"> <input type="submit" name="post" class="submit-post" value="Post" /> </p> </form> 

Проблема в том, что я заметил, что если зарегистрированный пользователь не имеет электронной почты, то комментарии идут на preview.html (который я не переопределил). Вот скриншот:

Это проблема безопасности, поскольку она позволяет кому-то изменять свое имя вместо использования имени пользователя во время входа в систему перед отправкой (когда я перечисляю комментарии, я использую comment.user.get_full_name вместо comment.name так что это не проблема, но он все равно может запутать, скажем, страницу администратора).

Поэтому мои вопросы:

  1. Как я могу позволить пользователям без комментариев отправлять комментарии?
  2. Как мне не разрешить форму перейти к preview.html ?
  3. Действительно ли мой код и дизайн хороши?

One Solution collect form web for “Пользователь, не имеющий электронной почты, не может оставлять комментарии, используя структуру комментариев Django”

Ну, вы можете использовать документацию по настройке для создания настраиваемого приложения, которое обрабатывает комментарии из рамки комментариев. Вы должны установить COMMENTS_APP = 'my_comment_app' в свой файл настроек и указать метод get_form() в __init__.py вашего приложения, который должен вернуть вашу собственную форму.

Пользовательская форма должна быть основана на contrib.comments.forms.CommentForm и должна выглядеть примерно так:

 class CustomForm(comment_forms.CommentForm): def __init__(*args, **kwargs): super(CustomFors, self).__init__(*args, **kwargs) self.fields["email"].required = False 

preview.html визуализируется, потому что форма содержит ошибки (требуется emai, но у пользователя нет его, и поэтому он не заполняется). Если ошибок нет – предварительный просмотр не будет показан.

  • Шаблон Django - новая переменная
  • как проверить DEBUG true / false в шаблоне django - точно в layout.html
  • Django не может найти шаблоны приложений
  • Как правильно получить URL-адрес для входа в шаблон?
  • Показать профиль pic из модели в шаблоне в django
  • Рендеринг внешнего блока в шаблоне Django
  • Django, создавая пользовательскую страницу ошибок 500/404
  • Как отключить кодировку HTML при использовании контекста в django
  • Python - лучший язык программирования в мире.