Django 如何用上下文参数预填充表单字段

1 投票
1 回答
1082 浏览
提问于 2025-04-18 09:28

我有下面这个视图。我想从 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

撰写回答