避免在 django post 方法中使用 csrf 令牌

Avoid csrf token in django post method

我正在制作网络应用程序的一部分(未登录的用户、所有访问者)可以填写表格,我必须将该数据(姓名、phone 号码、问题)保存在数据库中。 我正在使用 Django 制作 REST,但对于前端,我将使用 React 或 Django,我正在 Django 框架中制作 POST 方法,该方法从 POST https 请求中读取 JSON 数据,然后我将该数据保存到数据库..但我收到错误 CSRF 验证失败。请求中止。因为我不使用 CSRF 令牌,因为这不是必需的(我没有登录用户)。 但我不想禁用 CSRF,因为对于管理页面我会用它来验证用户? 那么有人知道如何避免为此方法使用 CSRF 令牌吗?提前致谢..

def saveDataToDatabase(request):
    if request.method == 'POST':
        json_data = json.loads(request.body) 
        try:
            data = json_data['data']
        except KeyError:
            HttpResponseServerError("Malformed data!")

这是方法的一部分..

可以使用 @csrf_exempt 装饰器在视图上禁用 csrf 保护。

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def saveDataToDatabase(request):
    # Your code here

更多Infos on the Django doc

您是否考虑过使用视图来处理请求?您可以使用这些,这样您就不必执行我给您的下一个建议。

如果第一个建议不够好,您可以在 Django 的设置文件中禁用 csrf 令牌。您需要删除(或注释)可用中间件列表中的 django.middleware.csrf.CsrfViewMiddleware

有其他问题尽管问。 ;)