Django 如何用上下文参数预填充表单字段
我有下面这个视图。我想从 get_context_data 方法
中获取 'email
',然后把它填充到我的 UserAuthenticationForm 表单的一个字段里,这样做可以吗?
视图:
class CampaignLoginView(LoginView):
model = Campaign
form_class = UserAuthenticationForm
def get_context_data(self, *args, **kwargs):
context = super(CampaignLoginView, self).get_context_data(*args, **kwargs)
user = AppUser.objects.get(pk=1)
context['email'] = user.email
表单:
class UserAuthenticationForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(UserAuthenticationForm, self).__init__(*args, **kwargs)
或者有没有什么其他的方式是我应该这样做的?
1 个回答
2
你想要做的是把initial
数据传递给表单。假设LoginView是一个基于类的视图,并且包含了FormMixin,那么最好的做法是在get_form_kwargs
这个方法里进行处理:
def get_form_kwargs(self):
kwargs = super(CampaignLoginView, self).get_form_kwargs()
kwargs['initial']['email'] = self.request.user.email
return kwargs