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.