我有以下观点。我想使用 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)
或者有没有办法“我应该这样做”?
最佳答案
您想要做的是将初始
数据传递到表单。假设 LoginView 是一个包含 FormMixin 的基于类的 View ,这最好在 get_form_kwargs
方法中完成:
def get_form_kwargs(self):
kwargs = super(CampaignLoginView, self).get_form_kwargs()
kwargs['initial']['email'] = self.request.user.email
return kwargs
关于python - Django 如何使用参数表单上下文预填充表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24171117/