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

标签 python django django-forms

我有以下观点。我想使用 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/

相关文章:

python - Numpy 在行上循环追加二维数组

Python 相当于 dplyr 的 ifelse

python - 在本地工作正常,但在生产中我收到错误,说违反了外键约束

python - Django 通用 View 中 get_context_data 和 queryset 之间的区别?

python - 如何使用 v2 api 列出我的保管箱中的所有文件和文件夹

python - pygame 和平铺 map 碰撞

Django 强制使用 BigAutoField,即使默认设置为 AutoField

python - 我需要有关如何在 Django 中实现复选框的建议

Django formset - 如何更新对象?

整数的Python正则表达式?