Python Flask POST/GET 请求

标签 python html sqlite flask

我需要有关网站用户身份验证的帮助。我正在使用 python flask、sqlite3 和 DB Browser for SQLite。我在登录部分遇到问题。每次我尝试登录并重定向到 html 网站时,它都会显示错误 404。

这是登录页面的代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset = "UTF-8"/>
    <title>PackageDrop Login</title>
    <link type = "text/css" rel = "stylesheet" href="{{ url_for('static', filename='login.css') }}" />
    <link type = "text/css" rel = "stylesheet" href="{{ url_for('static', filename='cssmainpage.css') }}" />
  </head>
  <body>
    <form action="/login" method="POST" autocomplete="off">
    Username:<br>
    <input type="text" name="username">
    <br>
    Password:<br>
    <input type="password" name="password">
    <br><br>
    <input type="submit" value="Login">
    </body>
</html>

转发到的页面只是简单的 html,没有什么特别的,所以我没有上传它。 如果您觉得需要更多信息才能理解,请询问,我会尽快发布。 感谢我得到的所有帮助。

编辑1: 在 login.html 中将表单操作从“login.html”更改为“登录”,现在它给出了 400 Bad Request 错误。

编辑2: 重定向有效。我更改了登录代码,但出现此错误:“ProgrammingError:在线程中创建的 SQLite 对象只能在同一线程中使用。该对象是在线程 ID 7812 中创建的,这是线程 ID 7388”。我唯一做的就是像这样连接到数据库: conn = sqlite3.connect('database.db') 这是登录的新代码:

@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    checkP = conn.execute('select pword from users where uname = request.form[\'username\']')
    arrayCheck = checkP.fetchall()
    if request.method == 'POST':
        if request.form['password'] != arrayCheck[[0][0]]:
            error = 'Incorrect password'
            return redirect(url_for('login.html'))
        elif len(arrayCheck) == 0:
            error = 'Username or password is incorrect'
            return redirect(url_for('login.html'))
        else:
            session['logged_in'] = True
            flash('You are logged in')
            return redirect(url_for("userpage"))
    return render_template('login.html')

最佳答案

Http 404 代码表示找不到页面。当您发布表单时,您的重定向是 userpage.html 但您的表单操作是 /login 路由。您的操作应该是成功发布后重定向的目标页面 action="/userpage" 我假设您有 userpage 查看功能。或者您可以将操作留空,只需尝试使用重定向函数 redirect(url_for('userpage'))。注意 url_for() 函数采用 View 函数名称而不是模板名称。最后一件事我没有注意您的登录逻辑。

关于Python Flask POST/GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532913/

相关文章:

python - 绘制一系列频率的直方图

javascript - 在 Laravel 中使用时 fullcalendar 不是一个函数

html - CSS中从透明到颜色的渐变

c - rails install pg - 找不到“libpq-fe.h header ”

firefox - 强制 Firefox 从 cookies.sqlite 中删除 SQLite 锁

python pandas,替换函数一次应用于多个数据帧

python - 在函数中迭代 Pandas 系列的行

python - 在并发环境中追加到文件末尾

html - Dreamweaver 中的表格高度,无法使用 <p 样式设置表格高度

database - sqlite 数据库查询出现问题,不同的查询不起作用