Sau khi đọc nhiều vấn đề về âm thanh tương tự và các tài liệu liên quan về Flask, tôi dường như không thể tìm ra điều gì đang tạo ra lỗi sau khi gửi biểu mẫu:
400 Yêu cầu Không hợp lệ
Trình duyệt (hoặc proxy) đã gửi một yêu cầu mà máy chủ này không thể hiểu được.
Mặc dù biểu mẫu luôn hiển thị đúng cách, nhưng yêu cầu không hợp lệ xảy ra khi tôi gửi biểu mẫu HTML liên quan đến một trong các chức năng sau:
@app.route('/app/business', methods=['GET', 'POST'])
def apply_business():
if request.method == 'POST':
new_account = Business(name=request.form['name_field'], email=request.form['email_field'], account_type="business",
q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'],
q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'],
account_status="pending", time=datetime.datetime.utcnow())
db.session.add(new_account)
db.session.commit()
session['name'] = request.form['name_field']
return redirect(url_for('success'))
return render_template('application.html', accounttype="business")
@app.route('/app/student', methods=['GET', 'POST'])
def apply_student():
if request.method == 'POST':
new_account = Student(name=request.form['name_field'], email=request.form['email_field'], account_type="student",
q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'],
q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'], q8=request.form['q8_field'],
q9=request.form['q9_field'], q10=request.form['q10_field'],
account_status="pending", time=datetime.datetime.utcnow())
db.session.add(new_account)
db.session.commit()
session['name'] = request.form['name_field']
return redirect(url_for('success'))
return render_template('application.html', accounttype="student")
Phần có liên quan của HTML là
<html>
<head>
<title>apply</title>
</head>
<body>
{% if accounttype=="business" %}
<form action="{{ url_for('apply_business') }}" method=post class="application_form">
{% elif accounttype=="student" %}
<form action="{{ url_for('apply_student') }}" method=post class="application_form">
{% endif %}
<p>Full Name:</p>
<input name="name_field" placeholder="First and Last">
<p>Email Address:</p>
<input name="email_field" placeholder="your@email.com">
...
Vấn đề đối với hầu hết mọi người không phải là gọi GET
hoặc POST
, nhưng tôi chỉ đang làm điều đó trong cả hai chức năng và tôi đã kiểm tra kỹ để đảm bảo rằng tôi đã nhập mọi thứ cần thiết, chẳng hạn như from flask import request
. Tôi cũng đã truy vấn cơ sở dữ liệu và xác nhận rằng các bổ sung từ biểu mẫu không được thêm vào.
Trong ứng dụng Flask, tôi đã yêu cầu các trường biểu mẫu được gắn nhãn hơi khác trong biểu mẫu HTML. Giữ tên nhất quán là điều bắt buộc. Có thể đọc thêm tại câu hỏi này Lỗi gửi biểu mẫu, Bình