Django Forbidden (403) CSRF 验证失败。请求中止

问题描述 投票:0回答:2

所以我对我的项目进行了部署,在我的网络使用 HTTPS 后,Django 现在向我显示此错误:

它发生在我的登录页面之后: 登录.html

{% load i18n static bootstrap4 %}

<!DOCTYPE html>
<html>

<head>

    <link rel="stylesheet" href="{% static 'web_site/css/login.css' %}" />
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"
        integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <script src="{% static 'web_site/js/login.js' %}"></script>

</head>
<body>

    <div class="wrapper">

        <div class="container">

            <h1>Welcome</h1>


            {% if context %}
            <ul class="messages">

                <li class="error">{{ context }}</li>

            </ul>
            {% endif %}
            <form class="form" action="" method="post">
                {% csrf_token %}
               {% bootstrap_form form %}
                <button type="submit" id="login-button">Login</button>

            </form>

        </div>

        <ul class="bg-bubbles">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>

    </div>

</body>
</html>

在我的views.py中我已经有: 返回渲染(请求,“web_site\my_profile.html”,{“cool”:p}) 并在表单之后添加 csrf_token

我的观点.py:

from django import template
from django.contrib import messages
from django.contrib.auth import authenticate
from django.contrib.auth import login as auth_login
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import ContentType, Permission, User
from django.shortcuts import render
from django.urls import resolve
from django.views.generic import TemplateView
from django.contrib.auth.mixins import LoginRequiredMixin

from .forms import FileForm


class HomeView(LoginRequiredMixin, TemplateView):
    template_name = "web_site/home.html"


@login_required
def profile(request):
    p = Permission.objects.filter(user=request.user)
    return render(request, "web_site\my_profile.html", {"cool": p})


def upload_file(request):
    if request.method == "POST":
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("/")
    else:
        form = FileForm()

    return render(request, "web_site/file.html", {"form": form})


@login_required
def list_app_tables(request):

    p = Permission.objects.filter(user=request.user)
    return render(request, "web_site\list_table_link.html", {"list": p})

我该怎么办?

TNX 伙计们

django django-models django-csrf csrf-token
2个回答
8
投票

在尝试了多种选项后,我找到了正确的选项。 在setting.py中需要添加

CSRF_TRUSTED_ORIGINS = ['https://your-domain.com']

现在可以使用了! 我希望它能帮助其他人。


0
投票

在什么地方添加这一行...

© www.soinside.com 2019 - 2024. All rights reserved.