python - 如何扩展 UserCreationForm 以包含电子邮件字段

标签 python django

我设法让标准的用户创建表单开始工作。其中仅包括用户名、密码 1 和密码 2 字段。但是,当我尝试包含电子邮件字段时,它从未出现在我的模板中。我想我可能遗漏了一些东西。这是我的代码:

表单.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>

此文件中的所有字段都被呈现到 View 中,除了电子邮件字段。

谁能找出原因?!

最佳答案

你输入错误的UserCreationForm在 views.py 中。你应该导入你自己的表单而不是 Django 的表单:

stories/views.py

from stories.forms import UserCreationForm
...

除此之外,您不必将所有字段都用<p></p> 包裹起来单独存在 form.as_p() 为了这份工作。

register.html

<form action = "/register/" method = "POST">{% csrf_token %}
    {{ form.as_p }}
</form>

希望这对您有所帮助。

关于python - 如何扩展 UserCreationForm 以包含电子邮件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860296/

相关文章:

css - Django 静态文件未加载。修复 settings.py 以加载相对路径上的文件

python - 使用 Python 操作 Chrome 开发工具?

python - 线程问题

python - 如何将正确的编码参数传递给markdown_py?

python - pygtk+glade+本地化

mysql - Django 设置存储引擎和默认字符集

python - 对派生类中的 self 以及与基类成员变量的关系感到困惑

python - Django - 数据库设计

database - 翻译 Django 数据库值的最佳/推荐方法

python - 遍历抽象 Django 模型的所有外键相关子项