【发布时间】:2015-12-27 21:31:57
【问题描述】:
我设法让标准的用户创建表单工作。其中仅包括用户名、密码 1 和密码 2 字段。但是,当我尝试包含电子邮件字段时,它永远不会出现在我的模板中。我想我可能在我看来遗漏了一些东西。这是我的代码:
forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class UserCreationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
views.py
from django.contrib.auth.forms import UserCreationForm
def register_user(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
args = {}
args.update(csrf(request))
args['form'] = UserCreationForm()
return render_to_response('stories/register.html', args)
register.html
<form action = "/register/" method = "POST">
{% csrf_token %}
<p>
{{ form.username.label_tag }}
{{ form.username}}
</p>
<p>
{{ form.email.label_tag }}
{{ form.email }}
</p>
<p>
{{ form.password1.label_tag }}
{{ form.password1 }}
</p>
<p>
{{ form.password2.label_tag }}
{{ form.password2 }}
</p>
<input type = "submit" value = "register" />
</form>
此文件中的所有字段都将呈现到视图中,除了电子邮件字段。
谁能看出原因?!
【问题讨论】:
-
如何在views.py中导入
UserCreationForm?我敢打赌你输入了错误的UserCreationForm。还要给你的表单子类起不同的名字,比如UserCreationWithEmailForm或UserCreateForm。 -
@ozgur 我在views.py页面顶部附近只有“from django.contrib.auth.forms import UserCreationForm”。对吗?
-
您能否更新您的问题并向我们展示您是如何在views.py 中导入它的?
-
您在 views.py 中导入原始表单类,而不是从 forms.py 中导入自定义表单类
-
我明白你的意思了。我现在解决了这个问题。它应该像这样导入:'from stories.forms import UserCreationForm'。谢谢@ozgur