Hi Ajeet, thanks for code, 
however after i press submit i get the

Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
    CSRF token missing or incorrect.
    
In general, this can occur when there is a genuine Cross Site Request Forgery, 
or when Django's CSRF mechanism has not been used correctly. For POST forms, 
you need to ensure:
Your browser is accepting cookies.
The view function passes a request to the template's render method.
In the template, there is a {% csrf_token %} template tag inside each POST form 
that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any 
views that use the csrf_token template tag, as well as those that accept the 
POST data.
The form has a valid CSRF token. After logging in in another browser tab or 
hitting the back button after a login, you may need to reload the page with the 
form, because the token is rotated after a login.
You're seeing the help section of this page because you have DEBUG = True in 
your Django settings file. Change that to False, and only the initial error 
message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.

my template is referencing csrf_token

template.html

<!DOCTYPE html>
<html>
<head>
        <title>Customer</title>
</head>
<body>
        <h8> "Customer register" </h8>
        <div>
                <div class = "container" >
                <form method="POST"
                        {% csrf_token %}
                        {{ form.as_p }}
                        <input type="submit" />
                </form>
                </div>
        </div>  
</body>
</html>


Am i doing something wrong?

Best,
K

On 25 Aug 2019, at 08:57, Ajeet Kumar Gupt <[email protected]> wrote:

> 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 <[email protected]> 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 [email protected].
> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/EE7F02B6-E358-4378-AD6C-255123EEE33B%40gmail.com.

Reply via email to