Как перенаправить обратно на ту же страницу при ошибках в комментариях Django - PullRequest
2 голосов
/ 23 июля 2011

Как вы получаете комментарии Django для перенаправления обратно на ту же страницу, где вы заполняете комментарий, если в форме отправки комментария есть ошибки?

Так что в основном у меня есть такой шаблон:1003 *

{% block content %}
{% render_comment_form for show %}
{% get_comment_count for show as comment_count %}
<div id="comments-count">
{% if comment_count == 0 %}
    No comments yet. Be the first!
{% else %}
    Number Of Comments: {{ comment_count }}
{% endif %}
</div>
{% if comment_count > 0 %}
{% render_comment_list for show %}
{% endif %}
{% endblock %}

Я создал свои собственные list.html и form.html, и все выглядит хорошо.В шаблоне form.html есть такой код:

<ul class="form-errors">
{% for field in form %}
    {% for error in field.errors %}
    <li>{{ field.label }}: {{ error|escape }}</li>
    {% endfor %}
{% endfor %}
</ul>

Итак, если в форме отправки комментария есть ошибка, я бы хотел, чтобы пользователь видел ту же страницу, что и раньше, только снекоторые ошибки отображаются в форме комментариев.Или же, если это невозможно, просто проигнорируйте ошибку и вместо перехода к шаблону preview.html он просто не сохранит комментарий и снова вернется на страницу.

Любая помощь?Обратите внимание, что в идеале я не хочу создавать пользовательское приложение для комментариев.Эта функциональность должна быть уже там.Я знаю, что есть следующая переменная, которую вы можете передать (и я делаю это), но она работает, только если форма комментария прошла успешно.

1 Ответ

1 голос
/ 24 июля 2011

вы должны использовать HttpResponseRedirect

from django.http import HttpResponseRedirect

def comment_form(request):
    error = request.GET.get('error', None)
    requestDict = {'error': error}
    return render_to_response('comments.html', requestDict, context_instance=RequestContext(request))

def post_comment(request):
    ....
    your code
    ....
    if something_goes_wrong:
        HttpResponseRedirect('project/comment_form/?error=ThereisProblem')

И в шаблоне вы можете сделать это:

{If error %}
   <h1>{{error}}<h1>
{%else%}
    render comments...
{%endif%}

Надеюсь, это поможет вам:)

...