Почему я получаю ошибку BadRequestKeyError в Python? - PullRequest
0 голосов
/ 06 декабря 2018

Я получаю эту ошибку, когда пытаюсь запустить следующий код в python.

Сообщение об ошибке

Мой код signup.html:

<html>

<head>
  <title>Signup</title>
  <link href="../static/styles/bookreview.css" rel="stylesheet" 
  type="text/css">
</head>

<body>

<!--Specifying navigation bar-->
<nav>
    <img id="logo" src="../static/images/OUAT Logo.png" alt="Once Upon A Time Logo">
    <ul>
        <li><a href="/">Home</a></li>
        <li><a href="Review Books">Books</a></li>
        <li><a href="Guestbook">Guestbook</a></li>
        <li><a href="Contact Us">Contact</a></li>
    </ul>
    <img id="searchicon" src="../static/images/Search Icon.png">
    <form>
        <input id=searchbar type=text>
    </form>
    <a href="Login"><button id=navsignin>Sign in</button></a>
</nav>

<div class="containers signupcontainer">
    <img id=signupgraphic src="../static/images/signupgraphic.png">
    <h2>Create an account and start <font color="#FF6572">commenting!</font>
    </h2>
    <!--{{msg}}-->
    <form action="" method="POST">
        <label>Full Name</label>
        <input class=signupfields type="text">

        <label>E-mail address</label>
        <input class=signupfields type="text">

        <label>Enter new password</label>
        <input class=signupfields type="password">

        <label>Re-enter password</label>
        <input class=signupfields type="password">

        <button class="buttons signupbutton">Create account</button>
    </form>
</div>
</body>

</html>

Мой код Python:

from flask import Flask, redirect, request, url_for, render_template
app = Flask(__name__, static_folder='static')
import sqlite3 as s
DB_FILE = 'mydb'
connection = s.connect(DB_FILE, check_same_thread=False)

@app.route('/')
def index():
   return render_template('Index.html')


@app.route('/Review Books')
def review():
   return render_template('Review.html')

@app.route('/Guestbook')
def guestbook():
   return render_template('Guestbook.html')


@app.route('/Contact Us')
def contact():
   return render_template('Contact.html')

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

def _insertuser(name, email, password, repeatpass):
   params = {'name': name, 'email': email, 'password': password, 
  'repeatpass': repeatpass}
   cursor = connection.cursor()
   cursor.execute("insert into users(name, email, password, repeatpass) 
   values (:name, :email, :password, :repeatpass)", params)
   connection.commit()

@app.route('/Signup', methods=['POST', 'GET'])
   def signup():
      if request.method == 'POST':
         _insertuser(request.form['name'], request.form['email'], 
         request.form['password'], request.form['repeatpass'])
         return render_template('Signup.html', msg=" thank you for signing 
         up")
      else:
         return render_template('Signup.html')

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

Моя регистрационная форма

Я видел похожиевопросы, и я сделал исправления по пути, но я все еще получаю эту ошибку.Может кто-нибудь помочь мне понять, почему я получаю эту ошибку и если я что-то пропустил.

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

отсутствует атрибут name для <input>

<form action="" method="POST">
    <label>Full Name</label>
    <input name="name" class=signupfields type="text">

    <label>E-mail address</label>
    <input name="email" class=signupfields type="text">

    <label>Enter new password</label>
    <input name="password" class=signupfields type="password">

    <label>Re-enter password</label>
    <input name="repeatpass" class=signupfields type="password">

    <button class="buttons signupbutton">Create account</button>
</form>
0 голосов
/ 06 декабря 2018

Я думаю, что вы получите BadRequestKeyError, потому что в вашем Signup маршруте, когда вы отправляете данные POST, в словаре request.form нет никакого значения.

Если вы редактируете вопрос и показываете свою форму вSignup.html, может быть, я мог бы узнать больше.Возможно, вы не указали правильный атрибут name для какого-либо ввода или ввода.

...