Django -表单中的访问请求.session

tyu7yeag  于 2023-08-08  发布在  Go
关注(0)|答案(3)|浏览(115)

我按如下方式调用表单,然后将其传递给模板:

f = UserProfileConfig(request)

字符串
我需要能够访问表单中的请求会话。。所以我先试了这个

class UserProfileConfig(forms.Form):

    def __init__(self,request,*args,**kwargs):
        super (UserProfileConfig,self).__init__(*args,**kwargs)
        self.tester = request.session['some_var']

    username = forms.CharField(label='Username',max_length=100,initial=self.tester)


我认为这不起作用,因为与设置用户名charfield相比,构造表单的时间更长。
接下来,我尝试了这个:

class UserProfileConfig(forms.Form):

def __init__(self,request,*args,**kwargs):
    super (UserProfileConfig,self).__init__(*args,**kwargs)
    self.a_try = forms.CharField(label='Username',max_length=100,initial=request.session['some_var'])

username = self.a_try


但毫无结果。
还有其他想法吗

zsohkypk

zsohkypk1#

试试这个:

class UserProfileConfig(forms.Form):

    def __init__(self,request,*args,**kwargs):
        super (UserProfileConfig,self).__init__(*args,**kwargs)
        self.fields['username'] = forms.CharField(label='Username',max_length=100,initial=request.session['some_var'])

字符串
我觉得这篇关于dynamic forms的文章很有帮助。

wko9yo5t

wko9yo5t2#

我很惊讶Django在表单中使用session是如此的困难。有时候我们真的需要在表单中使用会话数据来有效字段。
我创建一个小项目可以解决这个问题。django-account-helper
示例代码:

from account_helper.middleware import get_current_session

Class YourForm(forms.Form):

    def clean(self):
        session = get_current_session()
        if self.cleaned_data.get('foo') == session.get('foo'):
            # do something
            pass

        #... your code
    pass

字符串

2admgd59

2admgd593#

iN视图

form = MyForm(request.POST, request=request)

字符串
表格中的数量

self.request = kwargs.pop('request', None)
if self.request:
    my_variable_value = self.request.session.get('VARIABLE_NAME')
    print("APPLICATION_ID",my_variable_value)
else:
   print("Not found",self.request)

相关问题