我正在尝试创建一个页面,用户可以看到他们当前的电子邮件是什么,如果他们想要改变它。我只是测试一个非常简单的表单和一个非常简单的HttpResponseRedirect,如果表单无效。然而,无论我的电子邮件是否为用户更改,也不是我的失败响应,如果表单无效工作。我不知道是什么原因造成这种Django的方法来改变用户电子邮件不工作
forms.py:
class ChangeEmail(forms.Form):
email1 = forms.EmailField(label=u'Type new Email')
email2 = forms.EmailField(label=u'Type Email again')
views.py:
def change_email(request, username):
if request.method == 'POST':
user1 = User.objects.get(username=username)
form1 = ChangeEmail(request.POST)
if form1.is_valid():
user1.email = form.cleaned_data['email1']
form1.save()
return HttpResponseRedirect('/register/success')
else:
return HttpResponseRedirect('/stupid')
else:
user = User.objects.get(username=username)
email = user.email
form = ChangeEmail()
variables = RequestContext(request, {
'form': form,
'email': email
})
return render_to_response('registration/email.html', variables
感谢您的帮助提前。
编辑:
,我已经映射到呈现形式是/user/testuser/email
的URL。我试图将无效输入放入字段以获取错误消息,但是当我推送时,将其重定向回/user/testuser
页面,其中显示有关用户的信息。我的更改电子邮件模板如下:
{% extends "base.html" %}
{% block title %}Change Email{% endblock %}
{% block head %}Change Email{% endblock %}
{% block content %}
<p> Current Email: {{ email }} </p>
<form method="post" action=".">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Change Email" />
</form>
{% endblock %}
我已经把它改为'user1.save()'和您所做的reccommended的其他变化。然而,当我输入无效的输入时,它只是将我重定向到前一个网页,我是一个不显示错误消息的网页。 – 2011-12-23 18:06:57
你如何在模板中渲染表单?你是否在使用'{{form.as_p}}',用'{{form.email1}}'分别渲染字段,或者是什么? – 2011-12-23 18:09:03
我正在使用'{{form.as_p}}' – 2011-12-23 18:12:55