1. ホーム
  2. python

[解決済み] Django CSRF クッキーが設定されていない

2022-01-31 18:36:50

質問

CSRFクッキーが設定されないという問題が以前からあります。以下のコードを見てください。

パイソン

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))


HTMLでは、次のようなコードになります。

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>

私は行き詰まりました、私はすでにクッキーをクリアし、他のブラウザを使用しましたが、まだcsrfクッキーは設定されていません。

どうすればいいですか?

また、次のような場合にも発生することがあります。 CSRF_COOKIE_SECURE = True が設定されていて、非セキュアなアクセスをしている場合や CSRF_COOKIE_HTTPONLY = True が設定されている場合は、以下のようになります。 こちら こちら