I managed to get the stock standard User Creation Form to work. Which included just the username, password1 and password2 field. However, when I try to include the email field it never shows up in my template. I think I'm missing something in my view perhaps. Here is my code:
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>
All of the fields in this file are being rendered into the view, Except the email field.
Can anyone spot why?!
UserCreationForm
in views.py? I bet you are importing the wrongUserCreationForm
. Also give your form subclass different name likeUserCreationWithEmailForm
orUserCreateForm
. – ozgur