Python Django-Access request.session格式
我按如下方式调用表单,然后将其传递给模板:Python Django-Access request.session格式,python,django,django-forms,Python,Django,Django Forms,我按如下方式调用表单,然后将其传递给模板: f = UserProfileConfig(request) 我需要能够访问表单中的request.session。。。所以首先我尝试了这个: class UserProfileConfig(forms.Form): def __init__(self,request,*args,**kwargs): super (UserProfileConfig,self).__init__(*args,**kwargs)
f = UserProfileConfig(request)
我需要能够访问表单中的request.session。。。所以首先我尝试了这个:
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)
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
我推测,这不起作用,因为与设置username charfield相比,表单是在什么时候构建的
所以,接下来我尝试了这个:
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)
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
无济于事
还有其他想法吗?试试这个:
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'])
我觉得这篇文章非常有帮助。我很惊讶Django在表单中使用会话如此困难。有时,我们确实需要使用表单中的会话数据来创建有效字段 我创建一个小项目可以解决这个问题 示例代码:
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
工作得很有魅力!非常感谢。“我已经和它搏斗了一段时间了。@Felix-它的简单形式是什么?”?我正在包含
复选框SelectMultiple
的会话中保存列表。我会把链接放在这里。请看一看。非常感谢。你能帮我拿点东西吗