首页 > 解决方案 > 我无法查看此登录页面?

问题描述

我正在尝试使用flask和python创建一个登录页面,但我无法路由到该页面,它直接返回语句并在我的情况下打印Hello。如果我尝试添加 else case,它将进入 else case 并在 else case 中执行操作。如果我将 main 函数放在 else case 中,则会出现错误:

werkzeug.exceptions.HTTPException.wrap..newcls:400 错误请求:KeyError:'Employee_ID'

代码:

from flask import Flask, render_template, request, redirect,flash
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_HOST'] = "127.1.1.0"
app.config['MYSQL_USER'] = "root"
app.config['MYSQL_PASSWORD'] = "***"
app.config['MYSQL_DB'] ="users"

mysql = MySQL(app)
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        userDetails = request.form
        Employee_ID = userDetails['Employee_ID']
        password = userDetails['password']
        cur = mysql.connection.cursor()
        cur.execute("select * from user where Employee_ID=%s",(Employee_ID))
        EmpDetails=cur.fetchone()
        cur.close()
        if EmpDetails== password:
            flash('You have logged in successfully !!')
            return 0
    return "Hello"

if __name__ == '__main__':
    app.run(debug=True)

HTML 模板:

</head>
<h1><center>Sign In!</center></h1>

<body>

<div class="login-page">
    <div class="form" >
<form class="register-form" method="post" action="login.html">
    <input type="text" id="Employee_ID" placeholder="Employee ID" />
    <input type="password" id="password" placeholder="password"/>

    <button>Enter</button>
        </form>
    </div>    

</div>

</body>


</html>

标签: htmlmysqlpython-3.xflaskwsgi

解决方案


您缺少 html 输入中的名称字段。使用输入名称字段获取表单元素。您正在尝试使用引发KeyErrorid的字段来获取元素值,因为在表单中找不到具有该键的元素。

将您的 HTML 文件更改为:

</head>
<h1><center>Sign In!</center></h1>

<body>

<div class="login-page">
    <div class="form" >
<form class="register-form" method="post" action="login.html">
    <input type="text" id="Employee_ID" name="Employee_ID" placeholder="Employee ID" /> <-- add name field
    <input type="password" id="password" name="password" placeholder="password"/> <--add name field

    <button>Enter</button>
        </form>
    </div>    

</div>

</body>


</html>

希望它可以帮助你。


推荐阅读