takes mw_instance example custom crear django django-views django-middleware

mw_instance - django custom middleware typeerror object() takes no parameters



Prohibida(403) Verificación de CSRF fallida. Solicitud abortada (3)

Encontré este problema al usar el libro "La guía definitiva de Django", donde se usa la versión 1.1. El libro no aborda la necesidad de la verificación csrf_token que es obligatorio en versiones posteriores.

Para solucionar este problema, agregue:

from django.template import RequestContext

al archivo views.py y este argumento agregado para la función render_to_response:

context_instance = RequestContext(request)

Asegúrese de agregar {% csrf_token %} dentro de las etiquetas <form> en la plantilla

Estoy haciendo una aplicación de formulario de inicio de sesión, pero cuando ejecute mi aplicación y haga clic en el botón de inicio de sesión, se producirá el siguiente error

Prohibida (403) Verificación de CSRF fallida. Solicitud abortada

el código de view.py es como:

from django.template import loader from django.shortcuts import render_to_response from registration.models import Registration from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import redirect def view_login(request,registration_id): t = loader.get_template(''registration/login.html'') try: registration=Registration.objects.get(pk=registration_id) except Registration.DoesNotExist: return render_to_response("login.html",{"registration_id":registration_id}) def home(request,registration_id): if request.method == "POST": username = request.POST.get(''user_name'') password = request.POST.get(''password'') user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) # success return render(''registration/main_page.html'',{''registration_id'':registration_id},context_instance=RequestContext(user)) else: #user was not active return redirect(''q/'',context_instance=RequestContext(user)) else: # not a valid user return redirect(''q/'',context_instance=RequestContext(user)) else: # URL was accessed directly return redirect(''q/'',context_instance=RequestContext(user))


Necesita agregar {% csrf_token %} en su formulario

https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/

como eso :

<form> {% csrf_token %} <anything_else> </form>

Además, debe usar RequestContext (solicitud) cada vez que use render_to_response :

return render_to_response("login.html", {"registration_id":registration_id}, context_instance=RequestContext(request))

Y debe importar autenticar e iniciar sesión:

from django.contrib.auth import authenticate, login


Solo comenta ''django.middleware.csrf.CsrfViewMiddleware''

en su settings.py , que funciona para mí:

//settings.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'', ]