2016-03-28 19 views
2

Aşağıda Django şerit benim kurulum,Django-şerit ödemeden sonra Yasak

view.py

def charge(request): 
    if request.method == 'POST' : 
     resp = " Payment Successful !" 
     try: 
     token = request.POST['stripeToken'] 
     charge = stripe.Charge.create(
      amount=2000, # amount in cents, again 
      currency="usd", 
      source=token, 
      description="Example charge" 
     ) 
     print >>sys.stderr, 'Success Logger !' 
     except stripe.error.CardError as e: 
     resp = str(e) 

urls.py olan

urlpatterns = patterns('', 
    url(r'^$', views.home, name='home'), 
    url(r'^sign_in$', views.sign_in, name='sign_in'), 
    url(r'^sign_out$', views.sign_out, name='sign_out'), 
    url(r'^register$', views.register, name='register'), 
    url(r'^edit$', views.edit, name='edit'), 
    url(r'^charge$', views.charge, name='charge'), 

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

user.html

{% extends "page.html" %} 
{% block main %} 
     <div class="row"> 
     <div class="span6 columns"> 
     </div> 
     </div> 
     <p>Welcome {{ user.name }}.</p> 
     <p>Your credit card ends with {{ user.last_4_digits }} (<a href="{% url edit %}">change</a>)</p> 
     <form action="/charge" method="POST" id="payment_form"> 
      <script 
      src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
      data-key="pk_test_xFLF8rLaykv0tiGXFkhMj5XF" 
      data-amount="2000" 
      data-name="Vevanesca" 
      data-description="2 widgets ($20.00)" 
      data-image="/128x128.png" 
      data-locale="auto"> 
      </script> 
    </form> 
{% endblock %} 

Varsayılan ch kullanıyorum şerit tarafından sağlanan eckout.js. Ödeme yerleşimi açıldığında, test ayrıntılarını yazarım. Bir sonraki şey, birkaç saniye sonra Error 403 Forbidden CSRF verification failed. Request aborted ile /charge'a yönlendirir.

Bunu nasıl çözebilirim? Sadece şerit kullanarak basit bir test geçidi kurmak istiyorum.

+1

Formunuz içinde '{% csrf_token%}' bulunmuyor. Bunu kullanmayı denedin mi? –

+0

Geçemedim mi? Ayrıca ekleyerek yardımcı olmaz. – saruftw

+0

'django.middleware.csrf.CsrfViewMiddleware 'öğesini,' settings.py' içindeki 'MIDDLEWARE_CLASSES' girdisinden kaldırabilirsiniz. Daha fazla bilgi için https://docs.djangoproject.com/en/1.9/ref/csrf/ adresini ziyaret edin. –

cevap

0

Hızlı ve kirli bir düzeltme için, numaralı adresindeki MIDDLEWARE_CLASSES girişini settings.py'dan kaldırın.

Daha fazla bilgi için https://docs.djangoproject.com/en/1.9/ref/csrf/ adresine bakın.

+5

Kendi formlarınız dahil olmak üzere, tüm görünümlerden CSRF'yi kaldırdığı için bunu yapmamalısınız. Bunun yerine, ücret görünümü etrafında '@ csrf_exempt' dekoratörünü yerleştirin. –

İlgili konular