POST方法总是返回403 Forbidden

2024-01-23

我读过了Django - CSRF 验证失败 https://stackoverflow.com/questions/4547639/django-csrf-verification-failed以及与 django 和 POST 方法相关的几个问题(和答案)。最好但不适合我的答案之一是https://stackoverflow.com/a/4707639/755319 https://stackoverflow.com/a/4707639/755319

所有获得批准的答案至少表明了三件事:

  1. 使用RequestContext作为render_to_response_call的第三个参数
  2. 使用 POST 方法在每个表单中添加 {% csrf_token %}
  3. 检查settings.py中的MIDDLEWARE_CLASSES

我完全按照建议做了,但错误仍然出现。我使用 django 1.3.1(来自 ubuntu 12.04 存储库)和 python 2.7(默认来自 ubuntu)

这是我的观点:

# Create your views here.
from django.template import RequestContext
from django.http import HttpResponse
from django.shortcuts import render_to_response
from models import BookModel

def index(request):
    return HttpResponse('Welcome to the library')

def search_form(request):
    return render_to_response('library/search_form.html')

def search(request):
    if request.method=='POST':
        if 'q' in request.POST:
            q=request.POST['q']
            bookModel = BookModel.objects.filter(title__icontains=q)
            result = {'books' : bookModel,}
            return render_to_response('library/search.html', result, context_instance=RequestContext(request))
        else:
            return search_form(request)
    else:
        return search_form(request)

这是我的模板(search_form.html):

{% extends "base.html" %}
{% block content %}
<form action="/library/search/" method="post">
    {% csrf_token %} 
    <input type="text" name="q">
    <input type="submit" value="Search">
</form>
{% endblock %}

我已经重新启动了服务器,但是403禁止错误仍然存​​在,告诉CSRF验证失败。

我有 2 个问题:

  1. 如何修复这个错误?
  2. 为什么在 django 中创建“POST”如此困难,我的意思是有什么具体原因使其如此冗长(我来自 PHP,以前从未发现过这样的问题)?

我可能错了,但我发现上述解决方案相当复杂。

对我有用的只是将我的 csrf 令牌包含到我的发布请求中。

$.ajax({
    type: "POST",
    url: "/reports/",
    data: { csrfmiddlewaretoken: "{{ csrf_token }}",   // < here 
            state:"inactive" 
          },
    success: function() {
        alert("pocohuntus")
        console.log("prototype")
    }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POST方法总是返回403 Forbidden 的相关文章

  • Django 2.0 haystack 更新索引,重建索引抛出错误

    我使用 django 2 0 和 haystack whoosh 作为搜索 我按照文档中的说明进行配置 发生的问题是当我跑步时 manage py rebuild index它显示此错误 Traceback most recent call
  • 创建django权限,报错:ContentType匹配查询不存在

    我正在尝试添加两个组并授予他们对我的 Django 项目的权限 但我不断收到错误 ContentType 匹配查询不存在 我在跑步 姜戈 1 5 4 Python 2 7 3 南0 8 2 后SQL 9 3 这是我的代码 import dj
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • HTMX 用于处理来自 django 后端的消息

    我想使用 HTMX 来显示来自 django 后端的消息 经过大量的试验和错误 我最终得到了一个可行的解决方案 我想把它留给任何寻找它的人 另外 请随时发表您的建议 不幸的是 除了一点点example https github com ad
  • django orm:select_lated,用假外键欺骗反向外键除了模型之外,会出现什么问题?

    我正在尝试学习如何使用 Django 的 ORM 进行更高级的查询 而不是使用原始 sql select related进行连接以减少数据库命中 原则上它可以进行我手动执行的连接 但有一个问题 它不使用反向外键关系来制作sql 对于我的架构
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • TEST 镜像默认数据库但没有数据

    我正在尝试对我的 Django 应用程序进行一些测试 我使用了数据库镜像作为测试数据库 当我尝试运行一些测试时 默认数据库 中的数据似乎在镜像测试数据库中不可用 default sqlite ENGINE django db backend
  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • Django 模板标签内字符串连接最佳实践

    我正在尝试连接一些字符串以格式化模板标记内的 URL 但我找不到一种优雅的方法 到目前为止 我所拥有的是 button Activate http site domain url registration activate activati
  • “一旦获取切片就无法更新查询”。最佳实践?

    由于我的项目的性质 我发现自己不断地从查询集中取出切片 如下所示 Thread objects filter board requested board id order by updatedate 10 但这给我带来了实际对我选择的元素进
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • Django Rest Framework 删除 csrf

    我知道有关于 Django Rest Framework 的答案 但我找不到解决我的问题的方法 我有一个具有身份验证和一些功能的应用程序 我向其中添加了一个新应用程序 它使用 Django Rest Framework 我只想在这个应用程序
  • Django REST Framework ManyToMany 过滤多个值

    我有两个模型 一个定义用户 另一个定义这些用户的标签 我正在使用 Django REST Framework 创建 API 我希望能够查询至少包含标签 id 1 和 2 的用户 例如 如果用户的标签是 1 2 1 2 3 2 3 1 3 我
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • Django“和”Pinax 还是只是 Pinax?

    我正在开发一个个人项目 该项目已 完成 但现在我想添加一个社交应用程序 我认为 Pinax 已经为这项任务做好了准备 我想知道一些事情 我可以在我的项目中像 django 应用程序一样使用 pinax 吗 或者我需要使用 pinax 重新设
  • 如何处理 Django 中的错误

    我想让我的 django 应用程序尽可能对用户友好 并且我想处理适当的错误并让它推出类似于 javascript 中的警报的错误消息 我想在没有上传文件时执行此操作 因此 当按下上传按钮并且尚未上传任何内容时 将会发出一条警报消息 我的看法
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • 请参阅 Java EE eclipse 调试中的 POST 参数

    我在调试 Java EE 方面没有经验 我更像是一个 javascript 人 我需要查看哪些 HTTP POST 参数到达服务器端 我在表单将其操作指向的 jsp 文件中放置了一个断点 现在我在调试变量窗口中找不到 POST 内容 他们在
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em

随机推荐

  • Rails 5 集成测试失败,并出现 NoMethodError: undefined method `[]=' for nil:NilClass 使用 Devise 帮助程序 sign_in 时

    我正在使用内置的 Minitest 为 Rails v5 1 编写集成测试 这是集成测试类 require test helper class PuppiesEndpointsTest lt ActionDispatch Integrati
  • C++ 析构函数混乱,无法调试

    当我运行我的程序时一切正常 最后它打印出这样的内容 glibc detected streamShare double free or corruption fasttop 0x08292130 Backtrace lib tls i686
  • 使用 Pandas 从文件中读取分层 ascii 表

    我在这里的第一篇文章 我希望它不会太长或太详细 当我尝试阅读和解释下面的 ascii 表 从一个更大的表中简单提取 时 我遇到了问题 假设该文件名为 test txt A B C D E 0 992 CEN 4 2 657293E 00 3
  • 为什么传递临时对象作为参数需要 std::move?

    我试图通过初始化列表将字符串文字数组传递给仅接受的函数const char 示例代码如下 Example program void foo const char int main using argType const char foo a
  • Cypress 函数模拟类似于 jest.fn

    我在 React 中尝试 cypress 组件测试 但对一些基本的东西有点困惑 比如如何断言点击处理程序 开玩笑我可以做类似的事情 const hideMock jest fn renderWithProviders
  • 如何在 WPF ItemTemplate 中结合自动换行和动态字体大小

    我看到的针对各个项目的建议是使用TextBlock with TextWrapping true 对于前者 和一个Viewbox对于后者 然而 两人在一起玩得并不好 我见过的唯一将两者结合起来的方法是显式设置一个 Width on the
  • iPhone 浏览器默认密码字段首字母大写

    我正在为我的 web 应用程序的移动版本编写一个登录页面 并且有一个简单的 HTML 密码字段 如下所示
  • SQL中可以使用IF/Else吗?

    SQL中可以使用if else吗 如果我有一张名为supplier与列 sid gt 主键 sname and city 那么我希望 select sid from supplier where city taipei 如果不为空 Or s
  • 在应用程序安装时创建小部件

    我只是想知道 有什么方法可以让 Android 小部件在用户安装我的应用程序时显示在用户的主屏幕上吗 另外 我可以让他们选择从我的应用程序中创建小部件吗 我只是想知道 有什么方法可以让 Android 小部件在用户安装我的应用程序时显示在用
  • Eclipse 首选项存储持久性

    我有一个多用户 位置 RCP 应用程序 当前使用多个用户可配置选项 有些偏好是特定于电台的 有些偏好是特定于用户的 这些选项来自首选项存储 它将 prefs 文件保存到 workspace metadata plugins org ecli
  • 如何在 Django REST 中通过多对多发布模型

    我有一个具有多对多连接的模型 我想让这个模型在 Django REST 中可用 默认情况下 这样的模型是只读的 但我也想写 此外 如果能够将直通连接的信息作为嵌套模型集成到 GET 中 那就太好了 class KeyDateCase mod
  • 如何在没有HQL的情况下在Hibernate中执行普通的SQL查询?

    我有一个非常复杂的联接查询来从数据库中选择几个项目 并且它不涉及返回该表所需的任何更新 这就是为什么我不想使用 HQL Hibernate 查询语言 而是想作为简单的 SQL 查询来执行 是否可以在 hibernate 中执行涉及 3 个不
  • Bash - 如何列出大小以字节为单位的文件

    我想使用 ls 命令输出目录中的文件 但我需要文件大小 以字节为单位 这可以用 ls 命令实现吗 在类似的问题上我发现了这个ls l block size M它以兆字节为单位输出文件大小 但是我似乎无法让它只使用字节 如果您正在寻找有关文件
  • CRTP 避免虚拟成员函数开销

    In CRTP避免动态多态 https stackoverflow com questions 262254 c crtp to avoid dynamic polymorphism 提出以下解决方案以避免虚拟成员函数的开销并强加特定的接口
  • NODEJS 上的简单 SQL 查询从本地数据库获取并显示在本地系统上

    我正在尝试在浏览器上显示 JSON 格式的数据 任何建议 我在下面给出了我的 javascript js 代码 我正在尝试使用 Node JS 执行这个简单的查询 但它没有 似乎可行 数据库没有密码 我想做的就是在上以 JSON 格式显示答
  • 查找不匹配的记录

    这是一个mysql问题 我有两个表 一个称为表单 另一个称为记录 记录是每个表格的记录 我可以有多个记录与一个表单 ID 关联 然而 并非所有表单都有关联的记录 我想找到所有没有记录的表格 我能做的最好的就是这个 SELECT FROM f
  • 平移线的一部分

    我有一堆文件正在从一个 wiki 基于 Markdown 移动到另一个 基于 Creole 我已经编写了几个 sed 脚本来处理诸如转换链接格式和标头格式之类的事情 但新的 wiki 允许目录结构 我宁愿使用它而不是我现在拥有的伪目录结构
  • 在 MongoDB 中应该如何建模以下多对多关系?

    假设我的学生和老师处于多对多关系 如果我只想找出给定学生的所有教师 反之亦然 我通常使用嵌入式对象 ID 对其进行建模 例如 如果教师有一个属性 StudentIds 它是学生对象 Id 的数组 那么这足以完成您需要的所有查询 然而 假设学
  • 如何在R中删除包含少于3行数据的组? [复制]

    这个问题在这里已经有答案了 我在 R 中使用 dplyr 包 并按 3 个变量 年份 站点 巢穴 对数据进行分组 我想删除少于 3 行的组 例如 在下面的示例中 我想删除 2 的行 我有很多数据可以用来做这件事 所以虽然我可以费力地手工做这
  • POST方法总是返回403 Forbidden

    我读过了Django CSRF 验证失败 https stackoverflow com questions 4547639 django csrf verification failed以及与 django 和 POST 方法相关的几个问