2017-08-12 17 views
1

Userクラスの使用方法を学び、フォームを作成しましたが、電子メールfirst_nameとlast_nameフィールドを表示できません。Djangoフォームで名前と電子メールフィールドが表示されない

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/registerに移動すると、確認フィールドが表示され、フォームが機能してデータベースに保存されます。しかしUserモデルでは、first_namelast_nameemailのフィールドはどこにありますか?代わりに、あなたの意見でUserCreationForm

+0

from django.contrib.auth.forms import UserCreationForm 

を交換してください。 –

答えて

2

使用RegistrationFormあなたはどこでもあなたのRegistrationFormを使用していない

from .forms import RegistrationForm 

form = RegistrationForm() 
関連する問題