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'srender
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 usecsrf_protect
on any views that use thecsrf_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 <ajeetgupt1982@gmail.com> 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 <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.pyclass UserRegisterForm(UserCreationForm):email = forms.EmailField()class Meta:model = Userfields = 'username', 'email', 'password1', 'password2'Views.pydef 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 appreciatedBest,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
No comments:
Post a Comment