尽管使用POST,但不允许使用Flask方法

时间:2019-02-24 15:18:18

标签: python html flask http-status-code-405

我正在尝试在树莓派上创建一个基本的登录页面,但是当我尝试登录该页面时,我一直收到405错误。我已经研究了这个问题,但似乎只有在您使用的方法不正确时才会出现,但是由于它是登录屏幕,因此POST和GET应该绰绰有余。

Python

from flask import Flask
from flask import Flask, flash, redirect, render_template, request, session, abort
import os

app = Flask(__name__)

@app.route('/')
def home():
    if not session.get('logged_in'):
        return render_template('login.html')
    else:
        return "Hello Boss!"

@app.route('/login', methods=['POST', 'GET'])
def do_admin_login():
    if request.form['psw'] == 'password' and request.form['id'] == 'admin':
        print ("Hey ya!")
    else:
        print('wrong password!')
    return home()

if __name__ == "__main__":
    app.secret_key = os.urandom(12)
    app.run(debug=True,host='0.0.0.0', port=80)

HTML

<!DOCTYPE html>
<html>
<body>
<h1>Please login</h1
<form method="POST">
    <input name="id" type="text" placeholder="Enter UserID">
    <br>
    <input name="psw" type="password" placeholder="Enter Password">
    <input type="submit">
</form>
</body>
</html>

我被重定向到一个不同的问题,该问题可以通过更改操作部分来解决,但是我的却没有操作,因此这不应该是同一问题。我尝试向其中添加一个操作元素,但这并没有改变任何内容

1 个答案:

答案 0 :(得分:0)

问题是您需要在HTML中指定<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular.min.js"></script> <div class="sidebar" ng-app="myapp" ng-controller="MainCtrl"> <ul> <li style="list-style:none;" ng-repeat='ret in arr'> {{ret.name}} </li> </ul> </div>属性:

action

您可能会注意到,我使用<form method="POST" action="{{url_for('do_admin_login')}}"> <input name="id" type="text" placeholder="Enter UserID"> <br> <input name="psw" type="password" placeholder="Enter Password"> <input type="submit"> </form> 函数通过提供的方法(在本例中为url_for)生成了给定端点的URL。因此,值得一提的是,您需要将语句do_admin_login()更改为return home()