我正在尝试编写非常简单的代码 - 我对通用FormView有一个很大的问题。
#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值?第二个问题 - 如何改变这种行为?
答案 0 :(得分:1)
我忘记将我的form_kwargs添加到super(FooForm,self).get_form_kwargs()...我的错。