2

Django Classifiedsアプリに基づいてDjangoアプリを作成しようとしていますが、フォームを送信しようとするとエラーが発生します。CSRF verification failed. Request aborted. Reason given for failure: CSRF token missing or incorrect.

私は{% csrf_token %}次の形式で持っています:

<form method="post" action="{% url classifieds.views.create.checkout ad.pk %}">
 {% csrf_token %}
  <table>
   {{ form }}
     <tr>
     <th><label>Total:</label></th>
     <td><div id="total">Choose options above</div></td>
     </tr>
  </table>
</form>

私も使っていますfrom django.template import RequestContext

'django.middleware.csrf.CsrfViewMiddleware',私はsettings.pyのMIDDLEWARE_CLASSESにも含めました

フォームを適切に送信するために他に何が欠けている可能性がありますか?

関数は次のようになります。

def checkout(request, adId):
   ad = get_object_or_404(Ad, pk=adId)
   if request.method == 'POST':
    form = CheckoutForm(request.POST)
    if form.is_valid():

 ...

  payment.save()

  if django_settings.DEBUG:
    paypal_form = PayPalPaymentsForm(initial=paypal_values).sandbox()
  else:
    paypal_form = PayPalPaymentsForm(initial=paypal_values).render()

  return render_to_response('classifieds/paypal.html', {'form': paypal_form}, context_instance=RequestContext(request))
else:
  form = CheckoutForm()

return render_to_response('classifieds/checkout.html', {'ad': ad, 'form': form}, context_instance=RequestContext(request))

ご提案ありがとうございます。

4

1 に答える 1

3

正しい を使用しましたかRequestContext。問題がそれであるかどうかはわかりませんが、それも確認してください。使い方のステップ3

  • 対応するビュー関数で、「django.core.context_processors.csrf」コンテキスト プロセッサが使用されていることを確認します。通常、これは次の 2 つの方法のいずれかで実行できます。

    1. 常に「django.core.context_processors.csrf」を使用する RequestContext を使用します (TEMPLATE_CONTEXT_PROCESSORS の設定に関係なく)。汎用ビューまたは contrib アプリを使用している場合、これらのアプリは全体で RequestContext を使用するため、既にカバーされています。
于 2012-05-08T08:57:35.073 に答える