Cuando envío el formulario me sale el siguiente error:
Verificación CSRF fallida
Razón dada por el fracaso:
CSRF token missing or incorrect.
mi vistas.py es:
def name(request): if request.method == 'POST': form=NameForm(request.POST) if form.is_valid(): name=form.cleandata['your_name'] return HttpResponseRedirect('/thanks/',RequestContext(request)) else: form=NameForm() return render_to_response('contact.html')mi archivo setting.py:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]mi archivo Forms.py es:
class NameForm(forms.Form): your_name=forms.CharField(initial='your name',max_length=100)mi contacto.html es:
<form action="/your-name/" method="POST"> {% csrf_token %} {{form}} <input type="submit" value="Submit" /> </form>urls.py es:
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^search/$', search),url(r'^contact/$',contact), url(r'^name/$',name),url(r'^your-name',name),url(r'^thanks/$',thank) ]Usa la función render para renderizar la plantilla, en lugar de render_to_response .
from django.shortcuts import render def name(request): if request.method == 'POST': form = NameForm(request.POST) if form.is_valid(): name = form.cleaned_data['your_name'] return HttpResponseRedirect('/thanks/', RequestContext(request)) else: form = NameForm() return render(request, 'contact.html')csrf Forbidden (CSRF token missing or incorrect.) al enviar una solicitud:
En un formulario, incluya {% csrf_token %} , que genera una etiqueta de entrada con el valor del token csrf, y en la solicitud, haga que los encabezados incluyan X-CSRFTOKEN
headers: { content_type: 'application/json', 'X-CSRFToken': "{{ csrf_token }}" },