Django表单不显示名称和电子邮件字段

时间:2017-08-12 21:52:21

标签: django django-models django-forms

我正在尝试学习如何使用User类并制作表单,但是无法显示电子邮件,first_name和last_name字段,我有以下代码:

forms.py:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required = True)

    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'first_name'
            'password1',
            'password2'
        )

    def save(self, commit = True):
        user super(UserCreationForm, self).save(commit = False)
        user.first_name = self.cleaned_data['first_name']
        user.last_name =  self.cleaned_data['last_name']
        user.email =  self.cleaned_data['email']

            if commit:
                user.save()

                return user

views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponse

from django.contrib.auth.forms import UserCreationForm

def index(request):
    return HttpResponse('index page')


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('accounts')

    else:
        form = UserCreationForm()

    return render(request, 'accounts/register.html', {'form': form})
# Create your views here.

register.html:

{%  extends 'accounts/base.html' %}

{% block head %}
    <title> Sign Up</title>
{% endblock %}
{% block body %}
  <h2>Sign up</h2>

  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Sign up</button>
  </form>
{% endblock %}

当我转到/ accounts /注册一个带有用户名的表单时,会出现密码和密码确认字段,表单将起作用并保存到数据库中。但是first_name模型中包含last_nameemailUser字段的位置在哪里?

1 个答案:

答案 0 :(得分:2)

在您的观看次数中使用RegistrationForm代替UserCreationForm

替换

from django.contrib.auth.forms import UserCreationForm

from .forms import RegistrationForm

form = RegistrationForm()