我有一个表单,只有在用户尚未登录时才需要检查用户电子邮件。我知道我可以在我的视图中查看该电子邮件,但是对于此表单,我更愿意查看我的表单中的电子邮件。 / p>
使用下面的代码,即使导入int rowCount = xlsDs.Rows.Count;
,我也会在clean_email中收到错误:global name 'request' is not defined
。
request
答案 0 :(得分:1)
请求对象不会转到表单。
但您可以轻松更改表单类的构造函数以接收用户对象:
def __init__(self, user, *args, **kwargs):
self.user = user
super(MyForm, self).__init__(*args, **kwargs)
然后您可以检查用户以后是否经过身份验证:
def clean_email(self):
if not self.user.is_authenticated():
如果你真的需要整个请求对象,你只需要添加self,否则它会尝试访问一个名为request的全局变量。 即:
if not self.request.user.is_authenticated():
当然,分配对象变量,因此可以从类的任何方法访问它:
self.request = request
答案 1 :(得分:1)
在clean_email
方法中,您不能自动访问传递给__init__
方法的参数。
您需要在request
方法中将self.request
存储在__init__
中,然后您可以使用clean_email
方法访问它。
class MyForm(forms.ModelForm):
def __init__(self, request, *args, **kwargs):
self.request = request
super(MyForm, self).__init__(*args, **kwargs)
def clean_email(self):
if not self.request.user.is_authenticated():