在我的 Django 应用程序中,我希望用户能够更改电子邮件地址。我已经看到 StackOverflow 的解决方案将人们指向 django-profiles。不幸的是,我不想使用完整的配置文件模块来完成更改用户电子邮件的微小壮举。有没有人看到这在任何地方实施。在这种情况下,通过发送确认电子邮件的电子邮件地址验证过程是必要的。
我花了很多时间试图找到一个可行但无济于事的解决方案。
干杯。
在我的 Django 应用程序中,我希望用户能够更改电子邮件地址。我已经看到 StackOverflow 的解决方案将人们指向 django-profiles。不幸的是,我不想使用完整的配置文件模块来完成更改用户电子邮件的微小壮举。有没有人看到这在任何地方实施。在这种情况下,通过发送确认电子邮件的电子邮件地址验证过程是必要的。
我花了很多时间试图找到一个可行但无济于事的解决方案。
干杯。
电子邮件地址属于用户模型,因此无需使用配置文件让用户更新他们的电子邮件。从只有电子邮件作为字段的用户模型创建模型表单,然后在您的视图中提供该表单并进行处理。就像是:
class UserInfoForm(forms.ModelForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('email',)
def my_view(request):
if request.POST:
user_form = UserInfoForm(request.POST, instance=request.user)
if user_form.is_valid():
user_form.save()
return HttpResponseRedirect(reverse('form_success_screen'))
else:
user_form = UserInfoForm()
return render_to_response('my-template.html', {'user_form': user_form}, context_instance=RequestContext(request))
请注意,如果表单成功,我将返回一个 HttpResponseRedirect 以将用户发送到另一个页面。在这种情况下,我正在从我的 urls 文件中查找一个命名的 url。
好像有人自己写的。它允许用户更改他们的电子邮件地址并发送确认电子邮件。
不太确定这是否是 Django 1.4 的新要求,但我尝试了 Tom 的建议:
class UserInfoForm(forms.ModelForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('email')
并得到一个字段错误。每个字段后必须有一个尾随逗号(或者这就是解决我的错误的原因):
fields = ('email',)
解决了问题