110 votes

Django CSRF Cookie Not Set

J'ai un problème depuis un certain temps maintenant, j'ai un CSRF Cookie not set. Veuillez regarder les codes ci-dessous

Python

def deposit(request, account_num):
    if request.method == 'POST':
        account = get_object_or_404(account_info, acct_number=account_num)
        form_ = AccountForm(request.POST or None, instance=account)
        form = BalanceForm(request.POST)
        info = str(account_info.objects.filter(acct_number=account_num))
        inf = info.split()

        if form.is_valid():

            # cd=form.cleaned_data
            now = datetime.datetime.now()
            cmodel = form.save()
            cmodel.acct_number = account_num

            # RepresentsInt(cmodel.acct_number)
            cmodel.bal_change = "%0.2f" % float(cmodel.bal_change)
            cmodel.total_balance = "%0.2f" % (float(inf[1]) + float(cmodel.bal_change))
            account.balance = "%0.2f" % float(cmodel.total_balance)
            cmodel.total_balance = "%0.2f" % float(cmodel.total_balance)

            # cmodel.bal_change=cmodel.bal_change
            cmodel.issued = now.strftime("%m/%d/%y %I:%M:%S %p")
            account.recent_change = cmodel.issued
            cmodel.save()
            account.save()

            return HttpResponseRedirect("/history/" + account_num + "/")

        else:
            return render_to_response('history.html',
                                      {'account_form': form},
                                      context_instance=RequestContext(request))

Dans le HTML, voici le code

HTML

<form action="/deposit/{{ account_num }}/" method="post">
    <table>
        <tr>
            {{ account_form.bal_change }}
            &nbsp;
            <input type="submit" value="Deposit"/>
        </tr>
        {% csrf_token %}
    </table>
</form>

Je suis coincé, j'ai déjà effacé le cookie, utilisé un autre navigateur mais le cookie csrf n'est toujours pas installé.

0voto

IWS Points 736

Vérifiez que les cookies de chrome sont configurés avec l'option par défaut pour les sites Web. Autorisez la définition des données locales (recommandé).

0voto

shenqi0920 Points 3

Méthode 1 :

from django.shortcuts import render_to_response
return render_to_response(
    'history.html',
    RequestContext(request, {
        'account_form': form,
    })

Méthode 2 :

from django.shortcuts import render
return render(request, 'history.html', {
    'account_form': form,
})

Parce que la méthode render_to_response peut poser des problèmes de cookies de réponse.

0voto

JunLe Meng Points 33

Je n'ai rencontré qu'une seule fois, la solution est de vider les cookies. Et peut être modifié pendant le débogage SECRET_KEY liés.

0voto

infosmith Points 464

Le fait d'effacer le cache de mon navigateur a réglé ce problème pour moi. J'étais en train de passer d'un environnement de développement local à un autre pour réaliser le tutoriel django-blog-zinnia après avoir travaillé sur un autre projet lorsque cela s'est produit. Au début, j'ai pensé que le fait de changer l'ordre des INSTALLED_APPS pour qu'il corresponde à celui du tutoriel avait causé le problème, mais je les ai remis en place et je n'ai pu le corriger qu'en vidant le cache.

0voto

indspecter Points 9

J'utilisais Django 1.10 auparavant et j'étais donc confronté à ce problème. Maintenant, j'ai rétrogradé à Django 1.9 et cela fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X