2011-01-23 12 views
8

Django 1.2 लगातार पोस्ट करते समय मुझे यह सीएसआरएफ सत्यापन त्रुटि दे रहा है। मैं "लगता है कि" मैं सब बातों Django 1.2 डॉक्स, अर्थात् में पूछा किया है,Django 1.2.4 सीएसआरएफ सत्यापन

  1. सुनिश्चित MIDDLEWARE_CLASSES 'django.middleware.csrf.CsrfViewMiddleware'

  2. सुनिश्चित करें {% के ​​साथ शामिल है csrf_token%}

    <form action="/words/new/" method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
        <input type="submit" value="Enter" /> 
    </form> 
    
  3. उपयोग RequestContext मेरी प्रतिक्रिया में

    def create(request): 
        if request.method == 'POST': 
         form = DefinitionForm(request.POST) 
         if form.is_valid(): 
          form.save() 
         c = {} 
         return render_to_response('dict/thanks.html',c, 
                context_instance=RequestContext(request)) 
        else: 
         form = DefinitionForm() 
        return render_to_response('dict/create_definition.html', { 
         'form' : form, 
        }) 
    

ध्यान दें कि इस कार्य में GET कार्रवाई कार्य करती है। तो मुझे लगता है कि मैं render_to_response सही उपयोग कर रहा हूँ।

मैंने @csrf_protect सजावट में फेंकने की भी कोशिश की है और यहां तक ​​कि यह काम नहीं कर रहा है। मैं विचारों से बाहर हूं और मैं अपने लैपटॉप के साथ खुद को दबा रहा हूं।

कोई भी चीज़ जो आप सोच सकते हैं?

धन्यवाद!

+0

यह सुनिश्चित करने के लिए कि सीएसआरएफ टोकन फ़ील्ड वहां है, अपने ब्राउज़र में HTML को जांचें। फिर पोस्ट प्रतिक्रियाओं को जांचने के लिए इसे वापस देखने के लिए डंप करें। – Spacedman

उत्तर

7

आप # 3 का पालन नहीं कर रहे हैं। RequestContext का उपयोग टेम्पलेट के प्रतिपादन के साथ किया जाना चाहिए जो फ़ॉर्म दिखाता है। धन्यवाद पृष्ठ के लिए यह आवश्यक नहीं है।

return render_to_response('dict/create_definition.html', { 
    'form' : form, 
}, context_instance=RequestContext(request)) 

और एक तरफ ध्यान दें के रूप में, आप धन्यवाद पेज सीधे प्रतिपादन के बजाय PRG pattern उपयोग करना चाहिए।

+0

वह जीईटी कार्रवाई के लिए है। यदि आप कोड को दोबारा देखते हैं, तो मैंने उस स्थिति के लिए अनुरोध किया है जब request.method == 'POST'। – Bryan

+3

@ ब्राली: बिल्कुल यही समस्या है। सीएसआरएफ संदर्भ प्रोसेसर को टोकन बनाने और इसे टेम्पलेट संदर्भ में डालने पर अनुरोध संदर्भ की आवश्यकता होती है, (शायद) POST में जांचते समय नहीं। – AndiDog

+0

मेरी मदद की, धन्यवाद! – Chris