简体   繁体   English

Flask 无法从 html 表单中提取数据

[英]Flask is unable to pick data from html form

    <form action='signup' method="POST"  onsubmit="return checkPassword();">

        <div class="container">

            <center>
                <h1 style="color: #511845; font-family:'Varela Round',sans-serif;">User Sign up</h1>
            </center>
            <div class="spc">
                <div class="input-container">
                    <i class="fa fa-user icon" style="font-size:30px;"></i>
                    <input type="text" placeholder="Username" name="username" id="username" required>
                </div>
            </div>

            <div class="spc">
                <div class="input-container">
                    <i class="fa fa-envelope-square icon" style="font-size: 30px;"></i>
                    <input type="email" placeholder="Email Address" name="email" id="email" required>
                </div>
            </div>

            <div class="spc">
                <div class="input-container">
                    <i class="fa fa-phone icon" style="font-size: 30px;"></i>
                    <input type="number" placeholder="Phone Number should start with 92" title="Invalid Phone Number" name="phone no" id="number" pattern="[0-9]{12}" required>
                </div>
            </div>

            <div class="spc">
                <div class="input-container">
                    <i class="fa fa-lock icon" style="font-size: 30px;"></i>
                    <input type="password" placeholder="Password" name="psw" id="psw" title="Must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters"  pattern=(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,} required>
                </div>
            </div>

            <div class="spc">
                <div class="input-container">
                    <i class="fa fa-lock icon" style="font-size: 30px;"></i>
                    <input class="input-field" type="password" placeholder="Re-enter password" id="rpsw"  name="rpsw">
                    </div>
            </div>
             
            <center><button class="signup" type="submit" name="sub">Sign-up</button></center>

            <div class="spc" style="padding-left:30px">
                <div class="input-container">
                    <h3 class="signin">
                        <centre>Already have an Account?</centre>
                        <button class="signin-btn"><a style="text-decoration: none;color: white;" href="/signin">Sign-in</a></button>
                    </h3>

                </div>
            </div>
         

        </div>
    </form>
     
    <script>
        function checkPassword(){
          var1 = document.getElementById("psw");
          var2 = document.getElementById("rpsw");
          if(var1.value != var2.value){
              alert("Passwords do not match, please try again!");
              return false;   
              }
          }
         </script>
@app.route('/signup', methods=['GET','POST'])
def signup_page():
     
     if [request.method == "POST"]:
         user_name = request.form['username']
         user_email = request.form['email']
         user_number = request.form['number']
         user_password = request.form["psw"]
        user_id =  user_name[0:3] + str(user_number)[0:3] + user_password[0:3] + str(random.randrange(1000))
         

     return render_template('/Sign_up/signup.html')

I am trying to input data from the sign-up form then perform some calculations and finally store it in a database(not implemented right now) when I try to execute the above code it gives me errors on localhost the error as shown:我正在尝试从注册表单中输入数据,然后执行一些计算,最后将其存储在数据库中(现在未实现),当我尝试执行上述代码时,它在 localhost 上出现错误,错误如下所示:

File "C:\Users\lenovo\Desktop\Emergency-Service\User\index.py", line 30, in signup_page
user_name = request.form['username']
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\Lib\site-packages\werkzeug\datastructures.py", line 442, in __getitem__
raise exceptions.BadRequestKeyError(key)
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'username'

I think your problem is, that this should be request.form.get , like this我认为您的问题是,这应该是request.form.get ,就像这样

if [request.method == "POST"]:
         user_name = request.form.get['username']
         user_email = request.form.get['email']
         user_number = request.form.get['number']
         user_password = request.form.get["psw"]
        user_id =  user_name[0:3] + str(user_number)[0:3] + user_password[0:3] + str(random.randrange(1000))

The solution was:解决方案是:

@app.route('/signup', methods=['GET','POST'])
def signup_page():
     
     if [request.method == "POST"]:
         user_name = request.form.get('username')
         user_email = request.form.get('email')
         user_number = request.form.get('number')
         user_password = request.form.get("psw")
          
         user_id =  user_name[0:3] + str(user_number)[0:3] + user_password[0:3] + str(random.randrange(1000))
         print(user_name)
         

  return render_template('/Sign_up/signup.html')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM