繁体   English   中英

如何访问 Django 表单中的请求对象

[英]how to access request object inside Django Form

我需要访问 Django 表单中的请求对象,以动态命名表单字段,就像下面的代码一样。 请求对象当前返回 None。 我如何在表单中包含请求对象?

class PartitionAdminForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = User

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        request = kwargs.get('user', None)
        term_partition = core_utils.get_system_terms(request).get("partition")

        if self.fields.get('username'):
            self.fields['username'].label = _(f"{term_partition} Super Admin Username")
            self.fields['username'].help_text = ""

这个问题是通过使用函数 get_form_kwargs 从 CreateView 注入请求对象来解决的,如下所示:

def get_form_kwargs(self):
    kwargs = super(PartitionAdminCreateView, self).get_form_kwargs()
    kwargs['request'] = self.request
    return kwargs

然后在表单内部,我必须在初始化表单之前弹出请求对象,如下所示:

def __init__(self, *args, **kwargs):
    request = kwargs.pop('request', None)
    term_partition = core_utils.get_system_terms(request).get("partition")
    super().__init__(*args, **kwargs)
    ....
    ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM