7
votes

Django CSRF_Token pas imprimer sur le champ de saisie cachée

mon vues.py : xxx

dans mon modèle index.html : xxx

Alors, lorsque j'ouvre la page d'accueil dans le navigateur et que vous voyez le code source et il n'y a pas de jeton CSRF! xxx

Qu'est-ce que j'ai manqué?

update : Ceci a aidé.


0 commentaires

3 Réponses :


9
votes

Vous devez utiliser DemandeContext pour utiliser le middleware CSRF:

from django.template import RequestContext

# In your view:
return render_to_response('index.html'
    {'files':os.listdir('/home/username/public_html/posters') },
    context_instance=RequestContext(request))


1 commentaires

Merci, cela me conduisait à Noix. Heureux c'était quelque chose de simple.



1
votes

Une fois que vous êtes sur 1.3 (que vous devriez être), le Render Raccourci offre une manière plus compacte de faire IT:

from django.shortcuts import render

def some_view(request):
    return render(request, 'template.html', context_dict)


0 commentaires

0
votes

S'il vous plaît voir l'extrait de Django Document.

la méthode de décorateur Plutôt que d'ajouter CSRFViewMidDleware en tant que protection générale, vous pouvez utiliser le décorateur CSRF_Protect, qui présente exactement la même fonctionnalité, sur des vues particulières qui ont besoin de la protection. Il doit être utilisé à la fois sur des vues qui insérent le jeton CSRF dans la sortie et sur ceux qui acceptent les données post-formulaire. (Celles-ci sont souvent la même fonction de vue, mais pas toujours). Il est utilisé comme ceci: xxx

Utilisation du décorateur n'est pas recommandé par lui-même , car si vous oubliez de l'utiliser, vous aurez un trou de sécurité. La stratégie de «ceinture et d'accolades» d'utiliser les deux va bien et encourra des frais généraux minimaux.


0 commentaires