2017-04-08 11 views
0
def user_info(request, template_name='social/retrieve_user_data.html', username=None): 
    user = User.objects.get(username=username) 
    if request.method == 'POST': 
     form = UserInfoForm(request.POST, user) 
     print(form.is_valid()) 
     if form.is_valid(): 
      form.save() 
    else: 
     print('not post') 
     form = UserInfoForm(user) 


    return render_to_response(template_name, RequestContext(request, { 
     'form': form, 
    })) 


class UserInfoForm(forms.Form): 


    def __init__(self,*args,**kwargs): 
     self.user = kwargs.pop('user') 
     super(UserInfoForm,self).__init__(*args,**kwargs) 

これは、例外値u'user 'を持つKeyErrorを生成しています。ここで何が間違っていますか?どちらの場合も、formはuserの有効な値で初期化されます。なぜキーエラーが発生するのですか>DjangoのKeyError形式kwargs

+0

フォームフィールドにアクセスするには、 'super'メソッドを呼び出した後に' self.cleaned_data'ディクショナリを使用する必要があります。 –

答えて

2

ifまたはelseブロックのキーワード引数としてユーザーを渡すことはありません。それは次のようになります。

form = UserInfoForm(request.POST, user=user) 

と:

form = UserInfoForm(user=user) 
0

のみfunc(foo=bar)kwargs辞書に{"foo":bar}を置くことができます!コードform = UserInfoForm(request.POST, user)によれば、を使用してuserをキャプチャすることができます。