首页 > 编程问答 >Flask 应用程序的 POST 请求出现 405 method not allowed 错误

Flask 应用程序的 POST 请求出现 405 method not allowed 错误

时间:2024-08-05 04:33:09浏览次数:8  
标签:python forms flask methods

我有一个简单的 Web 应用程序,可以使用以下代码向选定的受访者发送消息(使用 Twilio API):

app.py

client = Client(account_sid, auth_token)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/send_sms',methods=['POST'])
def send_sms():
    message = request.form['message']
    selected_groups = request.form.getlist('groups')
    selected_secretariat_member = request.form.get('selected_secretariat_member')
    # more code ...
    return redirect(url_for('index'))

templates/index.html

<div class="container mt-5">
    <h1 class="text-center">Send Mass SMS</h1>
    <form method="post" action="{{ url_for('send_sms') }}">
      <div class="form-group">
        <label for="message">Message</label>
        <textarea class="form-control" id="message" name="message" rows="3" required></textarea>
      </div>
      <div class="form-group">
        <label>Select Groups</label>
        <!-- Groups -->
      </div>
      <button type="submit" class="btn btn-primary">Send SMS</button>
    </form>
</div>

我相信我使用的是 VS Code 实时服务器扩展提供的实时服务器。当我点击提交表单时,我收到了 405 错误。当我查看开发人员工具中的网络部分时,响应标头有一行说明允许哪些方法以及仅允许 GET, HEAD, OPTIONS 我尝试了人们提出的其他解决方案,例如:

  1. 将以下内容添加到 web.config
<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>
  1. index() 函数之前定义方法
@app.route('/', methods=['GET','POST'])
def index():
    return render_template('index.html')
  1. 检查处理程序映射以查看 POST 是否是其允许的动词的一部分

  2. 添加 GET send_sms()

app.route('/send_sms',methods=['GET','POST'])
def send_sms():

的方法中我真的很困惑要做什么。我曾经在学习 HTML Forms 和 php 时遇到过这个错误,但我没有理会它,因为我没有专用的 Web 服务器。然而,这似乎是一般方法的问题。感谢您的帮助。


你遇到的问题是 VS Code Live Server 扩展的限制。它主要用于提供静态内容,并且不支持像 POST 这样的 HTTP 方法来进行动态路由。这就是为什么你只看到 GET HEAD OPTIONS 方法被允许。

为了处理 POST 请求并使你的 Flask 应用按预期工作,你需要一个合适的 Web 服务器来运行你的 Flask 应用,而不是 Live Server。

以下是一些可以与 Flask 配合使用的流行选择:

  1. Flask 的内置开发服务器:

这是开始使用最简单的方法。你可以在终端中使用以下命令运行你的应用:

bash flask --app app run 确保将 app 替换为你的 Flask 应用实例所在的 Python 文件名或包名(如果有)。

  1. Gunicorn:

Gunicorn 是一个 Python WSGI HTTP 服务器,更适合生产环境。你可以使用 pip 安装它:

bash pip install gunicorn

然后,你可以使用以下命令运行你的应用:

bash gunicorn app:app

同样,将 app:app 替换为你的 Flask 应用实例所在的 Python 文件名或包名以及应用实例的名称。

  1. Waitress:

Waitress 是另一个 Python WSGI 服务器,以其在 Windows 上的可靠性而闻名。你可以使用 pip 安装它:

bash pip install waitress

然后,你可以使用以下命令运行你的应用:

bash waitress-serve --port=8000 app:app

在使用上述任何一种方法启动 Flask 应用后,你应该可以使用 POST 请求访问 /send_sms 路由,而不会遇到 405 方法不允许错误。

请记住,VS Code Live Server 非常适合开发静态网站,但对于涉及服务器端处理(如 Flask 应用)的内容,你需要一个合适的 Web 服务器来处理路由和 HTTP 方法。

标签:python,forms,flask,methods
From: 78832050

相关文章

  • Python 初学者,遇到简单数学问题
    我必须做一个数学练习,要求我以10^-5的幅度构建√3。使用扫描方法和Python。我是法国人,所以我不知道是否“扫描”是正确的词。在练习的前面,我得到了一些提示:√3是方程x^2-3=0的解,我需要达到x*的点y是负数所以我尝试了这个:x=1y=1+10......
  • python字典
    字典概念一种数据结构,用于储存键值对键:值=key:value键会有对应的值,键是用来查找值的(字→键,释义→值)字典名={}要在字典里放入多个键值对,就用"{}"把它们包住,键和值之间用":"表示对应,键值对之间用","分隔。用法如果我们要获取某个键的值,在字典名后面跟方括......
  • FLASK 相关链接
    FLASK中文文档:https://dormousehole.readthedocs.io/en/latest/FLASK教程:https://www.bookstack.cn/read/head-first-flask/README.mdhttp://www.coolpython.net/flask_tutorial/basic/route.htmlhttp://www.pythondoc.com/flask-mega-tutorial/index.htmlPython中文学......
  • python+flask计算机毕业设计健康管理系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着人们生活水平的提高和健康意识的增强,健康管理已成为社会关注的焦点。传统的健康管理方式往往依赖于纸质记录和医生的口头建议,这......
  • python+flask计算机毕业设计实验室信息化管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快速发展的科技时代,实验室作为科研与教学的核心场所,其管理效率和信息化水平直接影响到研究成果的质量和速度。传统的实验室管理方式......
  • python+flask计算机毕业设计中国诗词鉴赏网站(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景中国诗词作为中华文化的重要组成部分,承载着千年的历史与文化底蕴。从古至今,诗词一直是文人墨客表达情感、描绘景象的重要工具。然而,随着时......
  • python+flask计算机毕业设计装修公司管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着城市化进程的加速和人们生活水平的提高,装修行业迎来了前所未有的发展机遇。然而,传统装修公司管理方式存在诸多弊端,如信息不透明......
  • Python基础算法笔记
    整理自B站视频https://www.bilibili.com/video/BV1uA411N7c5递归1.汉诺塔问题#n个圆盘,从a经过b移动到cdefhanoi(n,a,b,c):ifn>0:#将n-1个圆盘从a经过c移动到bhanoi(n-1,a,c,b)#将最底层的圆盘从a移动到cprint("mov......
  • 24412-Python链接LDAP(Kerbores)认证的Impala
    24412-Python链接LDAP(Kerbores)认证的Impala必须安装pyImpala才行pipinstallimpylaPython3.x链接LDAP(Kerbores)认证的Impala代码fromimpala.dbapiimportconnectimpala_host="172.10.194.101"impala_port="25004"impala_user='huabingood_test&......
  • Python_DAG-有向无环图-igraph
    DAG-有向无环图-igraph安装pipinstallpython-igraphpipinstallpycairopiplist发现Python安装的有igraph包有两个:igraph、python-igraph有向图 有向图(Digraph)是图论中的一种图结构,其中的边(弧)具有方向性,表明从一个节点(顶点)到另一个节点的单向关系。与无向图不同,无向......