1

ユーザーの名前と電話番号を要求する基本的な Web ページに取り組んでいます。正常に送信されると、ユーザーの名前と電話番号を表示するページにリダイレクトされます。名前と電話番号を送信しようとすると、403 エラーが発生し続けました。コードは次のとおりです。

これは、views.py のコードです。

def homeform(request):
 if request.method == "POST":
form = PhoneForm(request.post)
if form.is_valid():
    cd = form.cleaned_data
    messages.success(request, "%s, you have recorded your phone number as %d. Thanks for the update.") %(cd["name"],cd["phone"])
    return HttpResponseRedirect('/success/')
 else:
    form = PhoneForm()
 return render_to_response('phone_form.html',{'form': form})

def success(request):
  return render_to_response('success.html',{'messages': messages})

これは urls.py のコードです:

urlpatterns = patterns('',
('^home/$',homeform),
('^success/$', success),

)

ビューの成功関数に使用しているhtmlファイルは次のとおりです。

<html>
<head>
<title>Success</title>
<head>
<body>
  {% if messages %}
  <ul class="messages">
  {% for message in messages %}
  <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
  {% endfor %}
  </ul>
  {% endif %}
</body>
</html>
4

1 に答える 1

2

質問のタイトルがわかりませんが、403 が表示される場合は、CSRF エラーである可能性が高いです (見たことがあるはずです)。成功ビュー/テンプレートではなく、POST するビューを投稿する必要があります。

{% csrf_token %}POSTフォームのタグ内に追加<form>しないと、djangoはCSRFエラーを訴えます。

于 2012-10-17T02:49:04.083 に答える