<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')
Я пытаюсь ввести данные из формы регистрации, затем выполнить некоторые вычисления и, наконец, сохранить их в базе данных (сейчас не реализовано), когда я пытаюсь выполнить приведенный выше код, он дает мне ошибки на локальном хосте, как показано ниже:
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'
Редактирование @James было правильным, пожалуйста, оставьте его в покое.
Я думаю, твоя проблема в том, что это должно быть 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))
Решение было:
@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')
Пожалуйста, прочитайте При каких обстоятельствах я могу добавить «срочно» или другие подобные фразы к моему вопросу, чтобы получить более быстрые ответы? - резюмируя, это не идеальный способ обращения к волонтерам и, вероятно, контрпродуктивно для получения ответов. Пожалуйста, воздержитесь от добавления этого к своим вопросам.