Reputation: 11193
i'm trying to create a registration form with following information (firstname, lastname, email, password, password_confirm), however i do not get firstname and lastname. so far i only get username, password and password confirmation. what am i doing wrong in order to add the missing fields?
forms.py
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False, label='Fornavn', help_text='Optional.')
last_name = forms.CharField(max_length=30, required=False, label='Efternavn', help_text='Optional.')
email = forms.EmailField(max_length=254, label='Email', help_text='Required. Inform a valid email address.')
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email')
register.html
{% for field in form %}
<div class="form-group">
<label>{{ field.label }}</label>
{% render_field field class="form-control" placeholder=field.help_text %}
</div>
{% endfor %}
views.py
def register(request):
if request.user.is_authenticated():
return redirect('/account/')
context = {}
if request.method == "POST":
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('/account/')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
urls
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^register/$', views.register, name='register')
]
Upvotes: 2
Views: 1462
Reputation: 78556
You're passing UserCreationForm
instead of SignUpForm
for your GET (and other) requests:
if request.method == "POST":
...
else:
form = SignUpForm()
Upvotes: 5