Django: перенаправление после публикации комментария - PullRequest
4 голосов
/ 02 марта 2011

Я пытаюсь перенаправить пользователя обратно на страницу, где был опубликован комментарий. Я нашел этот пост на сайте Джанго , но я делаю что-то не так, потому что он не будет перенаправлять обратно.

Где должен быть размещен вход, чтобы он был правильно перенаправлен?

{% load comments i18n %}
<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.errors %}{{ field.errors }}{% endif %}
            <input type="hidden" name="next" value="{% url proposal proposal.id %}" />
      <p
        {% if field.errors %} class="error"{% endif %}
        {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "name" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "email" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "url" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "title" %} style="display:none;"{% endifequal %}>
        <!-- {{ field.label_tag }}  -->{{ field }}
      </p>
    {% endif %}
  {% endfor %}
  <p class="submit">
    <!-- <button><input type="submit" name="post" value="{% trans "Send" %}" /></button> -->
        <button type="submit">Send</button>
    <!-- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" /> -->
  </p>
</form>

Ответы [ 4 ]

1 голос
/ 20 июля 2012

Проблема с ответом axel22 заключается в том, что требуется изменение каждого шаблона, требующего форму комментария - если у вас есть несколько типов объектов, которые можно комментировать, это не СУХОЙ.

К сожалению, я также все еще ищу ответ, который работает.

1 голос
/ 02 марта 2011

Возможно, вам не нужно проверять переменную next в вашем шаблоне. Вы можете попробовать изменить:

{% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %}

просто:

<input type="hidden" name="next" value="/added/comment/page/" />

В случае, если вы используете views.py, перенаправление оттуда кажется более очевидным, по крайней мере для меня, так как это помогает избежать беспокойства от шаблона:

from django.http import HttpResponseRedirect
HttpResponseRedirect("/path/to/redirect")
0 голосов
/ 13 июня 2014

См. Мое решение здесь: Django: Перенаправление на текущую статью после комментария

В основном используется представление, которое вызывается URL-адресом поста комментария, который перенаправляет обратно на исходную страницу реферера.

0 голосов
/ 03 июля 2011

, если вы используете тег {% render_comment_form for object %} в своем шаблоне, просто добавьте что-то вроде {% url object's_named_view object.id as next %} или оберните его конструкцией {% with object.get_absolute_url as next %} ... {% endwith %}.

...