Reputation: 4401
I found some similar question but no one never asked how to make it required fields! I have created a registration form with some extra fields, but I need to force the user to use those fields, and to raise a required error if he leaves it empty
here are my files :
forms.py
class SignUpForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'first_name','email', 'password1', 'password2', )
labels = {
'username': 'إسم المستخدم',
'first_name': 'إسمك الحقيقى(سيظهر كأسم البائع)',
'email': 'البربد الإلكترونى Email',
'password1': 'كلمة المرور',
'password2': 'تأكيد كلمة المرور'
views.py
def signup(request):
current_user = request.user
all_dress = Item.objects.all()
all_dress_s = Item.objects.all().filter(dress_special=True)
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('home')
else:
form = SignUpForm()
context = {
'form': form,
'all_dress': all_dress,
'all_dress_s': all_dress_s,
}
return render(request, 'fostania/signup.html',context)
signup.html
<form method="post" align="right">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</p>
{% endfor %}
<button type="submit" class="btn btn-success">تسجيــل</button><br>
بالضغط على تسجيل انت توافق على شروط الإستخدام الخاصة بموقعنا !
</form>
Now I need to make the first_name and email field required for the registration to complete .. how to do that!
Upvotes: 0
Views: 1625
Reputation: 420
I think you cant overwrite to django default user but you can abstract it
and for required in form you can write widgets and add all html like class id and many more
class RegistrationForm(UserCreationForm):
class Meta:
model = User
fields = {
'username',
'first_name',
'last_name',
'email',
'password1',
'password2',
}
widgets = {
'username':forms.TextInput(attrs={'class':'form-control'}),
'first_name':forms.TextInput(attrs={'class':'form-control', 'required':'required'}),
'last_name':forms.TextInput(attrs={'class':'form-control', 'required':'required'}),
'email':forms.EmailInput(attrs={'class':'form-control', 'required':'required'}),
'password1':forms.PasswordInput(attrs={'class':'form-control'}),
'password2':forms.PasswordInput(attrs={'class':'form-control'}),
}
Upvotes: 1
Reputation: 196
In Django you can extend Forms by adding new FormFields
, for example:
class SignUpForm(UserCreationForm):
username = forms.CharField(required=True)
class Meta:
model = User
fields = ('username', 'first_name','email', 'password1', 'password2', )
...
Upvotes: 4