有两个形式<input type="submit">
.但是当我发送它时,第二次提交会导致错误.
布局:
<form action="{{ url_for('index') }}" method="post">
<input type="submit" name="add" value="Like">
<input type="submit" name="remove" value="Dislike">
</form>
Run Code Online (Sandbox Code Playgroud)
main.py:
...
if request.method == 'POST':
if request.form['add']:
return redirect(url_for('index'))
elif request.form['remove']:
return redirect(url_for('index'))
...
Run Code Online (Sandbox Code Playgroud)
首先提交(添加)效果很好,但第二次(删除)...:
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
我该如何解决这个错误?
UPD:
这很简单:request.form返回ImmutableMultiDict:
...
if 'Like' in request.form.values():
...
elif 'Dislike' in request.form.values():
...
Run Code Online (Sandbox Code Playgroud) 我试图通过我的前端发布数据,烧瓶应用程序抛出了400个错误的请求.但是如果我使用Curl调用它也一样,它似乎工作正常.我不知道我在表格中缺少什么.
以下是我的表格代码
<script>
function sub() {
console.log('sub function');
$("#fquery").submit();
}
</script>
<form id="form1" action="/final" method="post">
<input id='query' type="text">
<button type="submit" onClick='sub()'>Submit »</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在服务器端:
@app.route('/final',methods=['POST','GET'])
def message():
if request.method == 'POST':
app.logger.debug(" entered message function"+ request.form['query'])
q = request.form['query']
return render_template('final.html',query=q,result="Core_Table Output")
Run Code Online (Sandbox Code Playgroud)
服务器端对我来说似乎很好.因为我收到卷曲请求的回复
curl http://localhost:8000/final -d "query=select starct st blah blah" -X POST -v
* Trying 127.0.0.1... connected
> POST /gc HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: localhost:8000
> Accept: */*
> Content-Length: 41 …
Run Code Online (Sandbox Code Playgroud) 如果 url 查询字符串拼写错误,如何抛出异常?
这是获取特定用户的 url:
http://127.0.0.1:5000/v1/t/user/?user_id=1
。如果持续下去,http://127.0.0.1:5000/v1/t/user/
它将给出用户列表。
如果user_id
查询字符串中的拼写错误(例如错误)怎么办use_id=1
,或者不是传递整数值,而是传递字符串值,user_id
我希望在这种情况下我应该返回 404 页面。我不认为内部request.args.get()
会抛出?如果我必须处理这种情况该怎么办?
page_index = request.args.get('index', 1, type=int)
max_item = request.args.get('max', 1, type=int)
userID = request.args.get('user_id', type=int)
Run Code Online (Sandbox Code Playgroud) 我完成了教程点上的所有内容(只是复制和粘贴),但当我尝试添加学生条目时,即"添加学生",它给出了
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
请告知本教程是否有任何问题.
它在def new()中的这一行失败了,在app.py中:
student = students(request.form['name'], request.form['city'], request.form['addr'], request.form['pin'])
Run Code Online (Sandbox Code Playgroud)
无论谁将其标记下来.请注意,这是一个充满拼写错误和错误缩进的教程.我只是一名学生.关闭它,我什么都不会学到.
参考:http://www.tutorialspoint.com/flask/flask_sqlalchemy.htm
from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
app.config['SECRET_KEY'] = "random string"
db = SQLAlchemy(app)
class Students(db.Model):
id = db.Column('student_id', db.Integer, primary_key = True)
name = db.Column(db.String(100))
city = db.Column(db.String(50))
addr = db.Column(db.String(200))
pin = db.Column(db.String(10))
def __init__(self, name, city, addr,pin):
self.name = name
self.city = city
self.addr = …
Run Code Online (Sandbox Code Playgroud) flask ×4
python ×4
forms ×1
html ×1
http ×1
javascript ×1
python-3.x ×1
sqlalchemy ×1
sqlite ×1