首页 > 解决方案 > python中的flask应用程序不允许使用方法

问题描述

我正在尝试使用烧瓶创建登录页面,但我不断收到此错误消息

不允许的方法

这是 main.py

from flask import Flask, render_template, redirect, url_for, request
app = Flask('app')

@app.route('/login')
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'admin':
            error = 'Invalid Credentials. Please try again.'
        else:
            return redirect(url_for('home'))
    return render_template('login.html', error=error)
@app.route('/home')
def home():
  return "home"

app.run(host='0.0.0.0', port=8080)

这是模板/login.html

  <head>
    <title>Flask Intro - login page</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="static/bootstrap.min.css" rel="stylesheet" media="screen">
  </head>
  <body>
    <div class="container">
      <h1>Please login</h1>
      <br>
      <form action="" method="post">
        <input type="text" placeholder="Username" name="username" value="{{
          request.form.username }}">
         <input type="password" placeholder="Password" name="password" value="{{
          request.form.password }}">
        <input class="btn btn-default" type="submit" value="Login">
      </form>
      {% if error %}
        <p class="error"><strong>Error:</strong> {{ error }}
      {% endif %}
    </div>
  </body>
</html>

我怎样才能解决这个问题?

标签: pythonflask

解决方案


您必须在要使用的任何端点上明确允许 POST。

默认情况下,路由只GET响应请求。您可以使用route()装饰器的方法参数来处理不同的 HTTP 方法。

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

参考:

https://flask.palletsprojects.com/en/1.1.x/quickstart/#http-methods


推荐阅读