亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Flask Python 網頁上的“提交”按鈕重定向到同一個 HTML 模板

為什么 Flask Python 網頁上的“提交”按鈕重定向到同一個 HTML 模板

qq_遁去的一_1 2023-09-25 17:01:51
我的目標是:一旦在 /login 頁面上使用正確的憑據登錄,用戶就會被重定向到 /camera 頁面。實際結果:/login 頁面剛剛重新加載,表單輸入被擦除。無錯誤消息/異常我查看了代碼,但不明白為什么要這樣做。任何幫助表示贊賞。main.py:from flask import Flask, render_template, redirect, url_forfrom flask_wtf import FlaskFormfrom flask_login import LoginManager, login_requiredfrom flaskconfig import Configfrom wtforms import StringField, PasswordField, SubmitFieldfrom wtforms.validators import DataRequiredfrom werkzeug.security import check_password_hashapp = Flask(__name__)app.config.from_object(Config)logindatabase = {    'User1': 'pbkdf2:sha256:150000$QLfB2gVe$fd76b36df43686e7a8e27a9066331727e246f0d2835688d8d303af2f9b13a1cc',     'User2': 'pbkdf2:sha256:150000$4rK2hvN8$d4940c3dac1ce6f293bc495934fce92cb840c470c83eb0e3b864f407eec85868'}class LoginForm(FlaskForm):    username = StringField('Username', validators=[DataRequired()])    password = PasswordField('Password', validators=[DataRequired()])    submit = SubmitField('Sign In')@app.route('/')def home():  return redirect(url_for('login'))@app.route('/login', methods = ['GET', 'POST'])def login():  form = LoginForm()  if form.validate_on_submit():    user = form.username.data    if user is None or user not in logindatabase.keys() or check_password_hash(logindatabase[user], form.password.data) == False:      return redirect(url_for('login'))    else:      login_user(user)      return redirect(url_for('camera'))  return render_template('login.html', title = 'Log In', form = form)@app.route('/camera')@login_requireddef camera():  return render_template('camera.html')if __name__ == '__main__':  app.run(host = '0.0.0.0')注意:在主機 0.0.0.0 上運行,因為我正在 repl.it 上開發(有意)模板>登錄.html:<!DOCTYPE html><html>  <head>    <title>Login Page - Door Camera System</title>  </head>  <body>    <h1>Welcome!</h1>    <hr>    {% with messages = get_flashed_messages() %}    {% if messages %}    <ul>      {% for msg in messages %}      <li>        {{ msg }}      </li>      {% endfor %}    </ul>    {% endif %}    {% endwith %}
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

方法應該是 POST 并刪除 novalidate。


<form action="" method="post">

    {{ form.hidden_tag() }}

    <p>

        {{ form.username.label }}<br>

        {{ form.username(size=32) }}

    </p>

    <p>

        {{ form.password.label }}<br>

        {{ form.password(size=32) }}

    </p>

    <p>{{ form.submit() }}</p>

    {{ form.csrf_token }}

</form>


查看完整回答
反對 回復 2023-09-25
  • 1 回答
  • 0 關注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號