Ci sto provando questo esempio. Ogni volta che provo ad accedere alla funzione dajax, dà l'errore "no csrf o cookie di sessione". Come posso aggiungere il token csrf in javascript. Ho provato ad aggiungere token csrf nel modello e non ha funzionato.
risposte:
1 per risposta № 1A partire dal django doc:
Aggiungi il middleware "django.middleware.csrf.CsrfViewMiddleware "al tuo elenco di classi middleware, MIDDLEWARE_CLASSES. (Dovrebbe venire prima di CsrfResponseMiddleware se è in uso, e prima di qualsiasi middleware di visualizzazione che presuppone che gli attacchi CSRF siano stati risolti.) In alternativa, è possibile utilizzare il decoratore django.views.decorators.csrf.csrf_protect su particolari viste che si desidera proteggere (vedere di seguito).
In qualsiasi modello che utilizza un modulo POST, utilizzare il tag csrf_token all'interno dell'elemento se il modulo è per un URL interno:
{% csrf_token%}
Questo non dovrebbe essere fatto per i moduli POST che hanno come target URL esterni, poiché ciò causerebbe la fuoriuscita del token CSRF, portando a una vulnerabilità.
Nelle funzioni di visualizzazione corrispondenti, assicurarsi che venga utilizzato il processore di contesto "django.core.context_processors.csrf". Di solito, ciò può essere fatto in due modi:
3.1 Usa RequestContext, che usa sempre "django.core.context_processors.csrf "(non importa quale sia l'impostazione TEMPLATE_CONTEXT_PROCESSORS). Se utilizzi viste generiche o app contribuenti, sei già coperto, dal momento che queste app utilizzano RequestContext ovunque.
3.2 Importare e utilizzare manualmente il processore per generare il token CSRF e aggiungerlo al contesto del modello.
2 per risposta № 2
1) aggiungi "django.middleware.csrf.CsrfViewMiddleware" al middleware_classes in settings.py
2) dopo il tag nel modello, usa {% csrf_token%}
in fondo, questo è tutto
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax qui puoi trovare informazioni sui token javascript e ajax csrf
1 per risposta № 3
Forse questo aiuterà: "Token CSRF mancante o errato" mentre il parametro post tramite AJAX in Django