2011-08-23 30 views
1

我正在嘗試編寫一段非常簡單的代碼,並且我在泛型FormView中遇到了一個大問題。Django FormView將POST值解釋爲列表

#views.py 

class FooView(FormView): 
    template_name = 'foo.html' 
    form_class = FooForm 

    def get_success_url(self): 
     return reverse('foo') 

    def get_context_data(self, **kwargs): 
     #... 
     return context 

    def form_valid(self, form): 
     form.save() 
     return super(FooView, self).form_valid(form) 

    def get_form_kwargs(self): 
     return {'foo':'bar'} 

#forms.py 
class FooForm(forms.ModelForm): 
    def __init__(self, foo, *args, **kwargs): 
      #... 
     super (FooForm, self).__init__(*args, **kwargs) 

    def clean_abc(self): 
     #... 
    def clean_contact(self): 
     #... 
    class Meta: 
     model = Foo 

#foo.html 
... 
<div id="form_add_foo"> 
    <form method="post" class="standard" id="form_add_foo"> 
     {% csrf_token %} 
     {{ form.as_p }} 
     <p><input type="submit" name="form_add_foo" value="Add Foo"></p> 
    </form> 
</div> 

#request.raw_post_data == csrfmiddlewaretoken=99a43151f0198b7c47541c1e91b230e5&a=2&b=1&c=1&form_add_foo=Add+Foo 

#form.data == {u'b': [u'1'], 
u'csrfmiddlewaretoken': [u'99a43151f0198b7c47541c1e91b230e5'], 
u'form_add_foo': [u'Add Foo'], 
u'c': [u'1'], 
u'a': [u'2']} 

我的問題是 - 爲什麼form.data值列表,從raw_post_data不僅僅是Unicode值?第二個問題 - 我該如何改變這種行爲?

回答

1

我忘了將我的form_kwargs添加到超級(FooForm,self).get_form_kwargs()...我的錯。