簡體   English   中英

嘗試提交時表單請求 flask 錯誤

[英]Form request flask error when trying to submit

我是 flask 的初學者程序員,我遇到了一個問題,我很少看到我的代碼有問題。

在登錄文件中,我有一個表單,它將向/check發送一個請求,但我得到一個錯誤,例如: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

我也有帶有動作路線“/”的注冊文件,這很有效。

這是代碼:

from flask import Flask, render_template, request, url_for, redirect
from models.Data_Base import DataBase

app = Flask(__name__)

db = DataBase()

@app.route('/')
def main_page_render():
    return render_template('home.html')

@app.route('/login')
def login_page_render():
    return render_template('login.html')

@app.route('/check')
def check_page_render():
    print('{} {}'.format(request.form['user_name'],  request.form['password']))
    if request.form['user_name'] == 'admin' and request.form['password']:
        return redirect(url_for('admin_page_render'))
    elif db.verify_login(request.form['user_name'], request.form['password']) == True:
        return redirect('/fighter/{}'.format(request.form['user_name']))

@app.route('/admin')
def admin_page_render():
    return 'Admin Page'

@app.route('/fighter/<username>')
def fighter_page_render(username):
    return 'Fighter page'


@app.route('/register')
def register_page_render():
    return render_template('register.html')


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


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login_page</title>
</head>
<body>
    <h2>Login Page</h2>

    <form action="/check">
      <label for="user_name">User name:</label><br>
      <input type="text" id="user_name" name="user_name"><br>
      <label for="password">Password:</label><br>
      <input type="password" id="password" name="password"><br><br>
      <input type="submit" value="Submit">
    </form>

    <p>Click submit in order to get to your account</p>
</body>
</html>

一個解決方案可以是這樣,嘗試做這些改變。

應用程序.py
...

@app.route('/check', methods=["GET", "POST"])
def check_page_render():
     print('{} {}'.format(request.form['user_name'],  request.form['password']))
     if request.form['user_name'] == 'admin' and request.form['password']:
         return redirect(url_for('admin_page_render'))
     elif db.verify_login(request.form['user_name'], request.form['password']) == True:
         return redirect('/fighter/{}'.format(request.form['user_name']))

...

/templates/home.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>login_page</title>
 </head>
 <body>
    <h2>Login Page</h2>

  <form action="/check" method="POST">
  <label for="user_name">User name:</label><br>
  <input type="text" id="user_name" name="user_name"><br>
  <label for="password">Password:</label><br>
  <input type="password" id="password" name="password"><br><br>
  <input type="submit" value="Submit">
</form>

   <p>Click submit in order to get to your account</p>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM