是否可以在窗体类中获取request.user数据?我想清理一个电子邮件地址,以确保它是唯一的,但如果它是当前用户的电子邮件地址,那么它应该通过。
这是我目前所拥有的,对于创建新用户非常有用,但是如果我想编辑一个用户,我会遇到他们的电子邮件无法验证的问题,因为它已经被接受了。如果我可以使用request.user.email检查这是他们的电子邮件,那么我就可以解决我的问题,但我不知道如何做到这一点。
class editUserForm(forms.Form):
email_address = forms.EmailField(widget=forms.TextInput(attrs={'class':'required'}))
def clean_email_address(self):
this_email = self.cleaned_data['email_address']
test = UserProfiles.objects.filter(email = this_email)
if len(test)>0:
raise ValidationError("A user with that email already exists.")
else:
return this_email
正如ars和Diarmuid所指出的,您可以将
request.user
传递到表单中,并在验证电子邮件时使用它。然而,Diarmuid的代码是错误的。代码实际上应该是:然后,在您看来,您可以这样使用它:
请注意,应该将request.POST作为关键字参数传递,因为构造函数希望“user”作为第一个位置参数。这样做时,需要将
user
作为关键字参数传递。可以将request.POST
作为位置参数传递,也可以作为关键字参数传递(通过data=request.POST
)。正如您所知,使用Django 1.4和基于泛型类的CreateView和UpdateView,在每个模型表单上都会填充一个self.instance,它允许您比较已发布的电子邮件和当前用户电子邮件。
下面是一个代码示例,使用mixin
以下是使用通用视图时让用户进入表单的方法:
在视图中,使用
get_form_kwargs
将request.user
传递到表单:在表单中,您将收到带有
__init__
函数的user
:相关问题 更多 >
编程相关推荐