2

コメント送信フォームにエラーがある場合、どのようにしてDjangoコメントを取得して、コメントを入力しているのと同じページにリダイレクトしますか?

だから基本的に私はこのようなテンプレートを持っています:

{% 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テンプレートに移行する代わりに、コメントを保存せずにページに戻ります。

何か助けはありますか?理想的には、カスタムコメントアプリを作成する必要はありません。この機能はすでに存在しているはずです。渡すことができる次の変数があることは知っています(そして私はこれを行っています)が、コメントフォームが成功した場合にのみ機能します。

4

1 に答える 1

1

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

これがお役に立てば幸いです:)

于 2011-07-24T10:07:05.637 に答える