Django: перенаправление после публикации комментария

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

Куда следует поместить ввод, чтобы он правильно перенаправлялся?

{% 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>

person Emile    schedule 02.03.2011    source источник
comment
выглядит правильно для меня - вы предоставляете следующее значение? Попробуйте протестировать с жестко закодированным следующим.   -  person Yuji 'Tomita' Tomita    schedule 02.03.2011
comment
Я нет. Я пропустил эту строку и подумал, что ‹input type=hidden name=next value={% url offer offer.id %} /› перенаправит ее.   -  person Emile    schedule 02.03.2011
comment
О, второго я даже не видел. Я бы определенно начал с жесткого кодирования одного значения в форму, чтобы начать сужать проблему.   -  person Yuji 'Tomita' Tomita    schedule 02.03.2011
comment
Этот вопрос может показать мою неопытность, но как/где мне определить следующее в моем коде? Вот код комментария для страницы объекта Picture: gist.github.com/4ea34b6f559a15c91d05 Спасибо!   -  person Emile    schedule 07.03.2011


Ответы (4)


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

{% 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")
person Arbie Samong    schedule 02.03.2011
comment
Арби, спасибо за комментарий. Я думаю, вы на это. У меня есть один вопрос: как/где определить «далее»? Вот пример моего раздела комментариев для объекта изображения: gist.github.com/4ea34b6f559a15c91d05 Еще раз спасибо за помощь! - person Emile; 07.03.2011
comment
Для себя я просто использовал функцию, которая отображала ту же страницу, на которой находится форма комментария. ‹тип ввода=скрытое имя=следующее значение={% url picture picture.id %} /› - person Emile; 08.03.2011

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

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

person datakid    schedule 19.07.2012

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

person delta32    schedule 02.07.2011

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

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

person Corey    schedule 13.06.2014