2012-05-08 5 views
2

은 내가 Django Classifieds App에 따라 장고 응용 프로그램을 만들려고하고 있지만, 양식 제출 동안 오류가 점점 오전 : CSRF verification failed. Request aborted. Reason given for failure: CSRF token missing or incorrect."CSRF 확인에 실패했습니다. CSRF 토큰이 누락되었거나 올바르지 않습니다." 장고

나는 형태의 {% 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> 

I을 또한 나는 또한 내 settings.py에 MIDDLEWARE_CLASSES에서 'django.middleware.csrf.CsrfViewMiddleware',을 포함했다 from django.template import RequestContext

을 사용하고

양식을 제출하기 위해 누락 된 사항은 무엇입니까?

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)) 

이 당신의 제안을 주셔서 감사합니다 : 같은

기능은 보인다.

+0

를 통해 RequestContext를 사용하기 때문에 당신이 일반적인 견해 나있는 contrib 응용 프로그램을 사용하는 경우, 이미 덮여있다? – DrTyrsa

+0

Chech : 미들웨어/데코레이터 및 다른 것들을 필요로하는 경우 ... https://docs.djangoproject.com/ko/1.4/ref/contrib/csrf/#how-it-works – FallenAngel

+0

예, django.middleware.csrf.CsrfViewMiddleware '내 settings.py의 MIDDLEWARE_CLASSES에서. 내가 누락 될 수있는 다른 것? –

답변

3

정확한 RequestContext을 사용하셨습니까? 문제가있는 경우 확실하지 않지만이를 확인할 수도 있습니다. 해당 뷰 함수에서 how to use it

  • 의 단계 3 'django.core.context_processors.csrf'콘텍스트 프로세서가 사용되는 것을 보장한다. 항상 'django.core.context_processors.csrf'(무엇을 당신의 TEMPLATE_CONTEXT_PROCESSORS 설정에 상관없이)를 사용

    1. 사용 RequestContext : 일반적으로이 두 가지 방법 중 하나를 수행 할 수 있습니다. 당신이 미들웨어 및 상황에 맞는 프로세서를 CSRF가 있습니까 이러한 애플 리케이션은
+1

[사용 방법] (http://docs.djangoproject.com/ko/1.4/ref/contrib/csrf/#how-to-use-it) 링크는 더 이상 유효하지 않습니다. 이것은 [유효한 링크]입니다 (https://docs.djangoproject.com/ko/1.9/ref/templates/api/). – ph7

관련 문제