Sunday, August 25, 2019

Re: User Register form not validating or returning errors.

Hi, 

Please use the below code.

views.py
__________________

def user_register(request):
# if this is a POST request we need to process the form data
template = 'mymodule/register.html'
# template = 'index.html'
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = RegisterForm(request.POST)
# check whether it's valid:
if form.is_valid():
if User.objects.filter(username=form.cleaned_data['username']).exists():
return render(request, template, {
'form': form,
'error_message': 'Username already exists.'
})
elif User.objects.filter(email=form.cleaned_data['email']).exists():
return render(request, template, {
'form': form,
'error_message': 'Email already exists.'
})
elif form.cleaned_data['password'] != form.cleaned_data['password_repeat']:
return render(request, template, {
'form': form,
'error_message': 'Passwords do not match.'
})
else:
# Create the user:
user = User.objects.create_user(
form.cleaned_data['username'],
form.cleaned_data['email'],
form.cleaned_data['password']
)
user.first_name = form.cleaned_data['first_name']
user.last_name = form.cleaned_data['last_name']
user.phone_number = form.cleaned_data['phone_number']
user.save()
return redirect('/login/')
# Login the user
#login(request, user)
#def user_login(request):
# redirect to accounts page:
#return render(request, '/login.html')
# return HttpResponseRedirect(return, '/login.html')
# No post data availabe, let's just show the page.
else:
form = RegisterForm()
return render(request, template, {'form': form})

On Sat, Aug 24, 2019 at 8:34 PM Kean <keanld1@gmail.com> wrote:
Hi,

New to Django.
I've created a user registration form, the issue is it does not run validations or report errors with the data entered. It simply routes to the redirect url.
Please can I ensure the user sees the correct error in a post case scenari for both a django form, and customsied django form.

forms.py

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

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

Views.py

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Account created for {username}')
        return HttpResponseRedirect('cprofile')
    else:
        form = UserRegisterForm()
    context = {'form': form}
    return render(request, "register.html", context,)

template.html

<head>
<title>Registration</title>
</head>
<body>
<br>
<div class = "container">
<form method = "POST">
{% csrf_token %}
<fieldset class="form">
<legend class="border-bottom mb-2">Register</legend>
{{ form|crispy }}
{% if messages %}
{% for messages in messages %}
<div class="alert alert{{ message.tag }}">
{{ messages }}
</div>
{% endfor %}
{% endif %}
</fieldset>
<br>
<div class = "form">
<button class ="btn btn-outline-info" type="submit">Register</button>

Any help would be much appreciated

Best,

K


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/5a003506-de8d-4587-863d-3fc26e4c45c1%40googlegroups.com.


--






Thanks & Regards
Ajeet Kumar Gupt
+91-9311232332

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2BTqRssQ_O3CRknqdev24W7PHWWH0Hd19%3DH-gH-UmSdrmiMyJA%40mail.gmail.com.

No comments:

Post a Comment