J'ai un flux dans mon Django dans laquelle je redirige l'utilisateur vers un autre service (par exemple Paypal) qui, après un certain traitement, renvoie l'utilisateur sur mon propre serveur. Le point de retour sur mon serveur est une simple page de réussite HTML que je rend en utilisant direct_to_template.
Pour des raisons étranges, l'autre serveur envoie une demande POST et donc l'utilisateur voit une erreur manquante de jeton CSRF car l'autre serveur ne renvoie aucun jeton CSRF.
Comment puis-je exempter une vue direct_to_template des jetons CSRF?
Vous pouvez utiliser le csrf_exempt
décorateur pour désactiver la protection CSRF pour une vue particulière.
Supposons que votre modèle d'URL soit:
('^my_page/$', direct_to_template, {'template': 'my_page.html'})
Ajoutez l'importation suivante à votre urls.py
:
from Django.views.decorators.csrf import csrf_exempt
Modifiez ensuite le modèle d'URL en:
('^my_page/$', csrf_exempt(direct_to_template), {'template': 'my_page.html'})
Vous pouvez utiliser @csrf_exempt
Décorateur pour exonérer le jeton csrf pour cela que vous devez importer
from Django.views.decorators.csrf import csrf_exempt
puis écrivez @csrf_exempt
devant votre vue
cela fonctionnera correctement :)