我是Flask的新手。我无法理解如何使用request.args
。我在某处读到它用于返回查询字符串的值[如果我错了就纠正我]。以及request.args.get()
所需的参数数量。
我知道当我必须存储提交的表单数据时,我可以使用
fname = request.form.get("firstname")
此处,只传递一个参数。
考虑这段代码。在此代码中也进行了分页。
@app.route("/")
def home():
cnx = db_connect()
cur = cnx.cursor()
output = []
page = request.args.get('page', 1)
try:
page = int(page)
skip = (page-1)*4
except:
abort(404)
stmt_select = "select * from posts limit %s, 4;"
values=[skip]
cur.execute(stmt_select,values)
x=cur.fetchall()
for row in reversed(x):
data = {
"uid":row[0],
"pid":row[1],
"subject":row[2],
"post_content":row[3],
"date":datetime.fromtimestamp(row[4]),
}
output.append(data)
next = page + 1
previous = page-1
if previous<1:
previous=1
return render_template("home.html", persons=output, next=next, previous=previous)
这里,request.args.get()
有两个参数。请解释为什么它需要两个参数以及它的用途。
答案 0 :(得分:81)
根据flask.Request.args文件。
<强> flask.Request.args 强>
带有查询字符串的已解析内容的 MultiDict 。 (问号后面的URL中的部分)。
因此args.get()
是MultiDict的方法get()
,其原型如下:
get(key, default=None, type=None)
答案 1 :(得分:10)
@martinho作为一个自己使用Flask和Python的新手,我认为之前的答案理所当然地认为你对基础知识有很好的理解。如果您或其他观众不了解基本面,我会提供更多背景来理解答案...
... request.args
带来了一个&#34;字典&#34;对象为你。 &#34;字典&#34; object类似于Python中的其他集合类型的对象,因为它可以在一个对象中存储许多元素。因此,你的问题的答案
request.args.get()
需要多少参数。
只需要一个对象,一个&#34;字典&#34;对象类型(如前面的答案中所述)。这个&#34;字典&#34;但是,对象可以包含所需数量的元素...(字典具有称为键,值的配对元素)。
除了&#34;词典&#34;之外的其他集合类型的对象将是&#34; tuple&#34;和&#34; list&#34; ...您可以对这些对象进行谷歌搜索和&#34;数据结构&#34;为了学习其他Python基础知识。这个答案是基于Python的;如果同样适用于其他编程语言,我也不知道。
答案 2 :(得分:1)
request.args
是MultiDict,其中包含查询字符串的已解析内容。
来自get
commons-collections
方法:
获取(键,默认=无,类型=无)
如果是,则返回默认值 请求的数据不存在。如果提供了类型并且可以调用它 应该转换值,返回它或引发ValueError,如果是这样的话 不可能。
答案 3 :(得分:0)
在某些情况下,有一些有趣的行为需要注意:
from werkzeug.datastructures import MultiDict
d = MultiDict([("ex1", ""), ("ex2", None)])
d.get("ex1", "alternive")
# returns: ''
d.get("ex2", "alternative")
# returns no visible output of any kind
# It is returning literally None, so if you do:
d.get("ex2", "alternative") is None
# it returns: True
d.get("ex3", "alternative")
# returns: 'alternative'