请求
("key") 获取get请求参数
请求
("key", type=str, default=None) 获取表单数据
("key") 获取所有参数
# 参数解析对象生成
parser = ()
args = parser.parse_args()
-
@('/login',methods=["GET","POST"])
-
def login():
-
if == "POST":
-
# 以POST方式传参数,通过form取值
-
# 如果Key之不存在,报错KeyError,返回400的页面
-
username = ['username']
-
password = ['password']
-
print username,password
-
else:
-
# 以GET方式传参数,通过args取值
-
username = ['username']
-
print username
-
return render_template('', req_method=)
传递参数:
传递参数的语法是:`/<参数名>/`。然后在视图函数中,也要定义同名的参数。例如:
@('/article/<string:test>/')
# 传递的参数名是test,因此就需要在函数的形参中定义同名的参数test
def test_article(test):
return 'test_article:{}'.format(test)
参数的数据类型:
1. 如果没有指定具体的数据类型,那么默认就是使用`string`数据类型。
2. `int`数据类型只能传递`int`类型。 限制参数:<int:article_id>,如果在浏览器中访问:http://127.0.0.1:5000/p/11111.0/ 那就找不到报not found错误,因为我限制了是整形,你现在是浮点型,同理,如果你是浮点型,我使用 整形访问,那就又访问不到了
3. `float`数据类型只能传递`float`类型。
4. `path`数据类型和`string`有点类似,都是可以接收任意的字符串, 但是`path`可以接收路径,也就是说可以包含斜杠。
5. `uuid`数据类型只能接收符合`uuid`的字符串。`uuid`是一个全宇宙都唯一的字符串, 一般可以用来作为表的主键。
关于path数据类型,在主文件中定义如下的代码:
@('/article/<path:test>/') path数据类型
def test_article(test):
return 'test_article:{}'.format(test)
# 通过问号的形式传递参数,例如百度:http://127.0.0.1:5000/d/?wd=%E7%AE%80%E4%B9%A6&pn=20
@('/d/')
def d():
wd = ("wd")
page_number = ("pn")
return "通过字符串查询的关键字为:{}, 页码为:{}".format(wd, page_number)
接收用户传递的参数:
1. 第一种:使用path的形式(将参数嵌入到路径中),就是上面讲的。
2. 第二种:使用查询字符串的方式,就是通过`?key=value`的形式传递的。
@('/d/')
def d():
wd = ('wd')
return '您通过查询字符串的方式传递的参数是:%s' % wd ```
3. 如果你的这个页面的想要做`SEO`优化,就是被搜索引擎搜索到,那么推荐使用第一种形式(path的形式)。 如果不在乎搜索引擎优化,那么就可以使用第二种(查询字符串的形式)。
文件上传
-
from import secure_filename
-
@('/uploads', methods=['GET', 'POST'])
-
def uploads():
-
if == "POST":
-
fe = ['files']
-
# basepath = ((__file__))
-
basepath = ((__file__))
-
upload_path = (basepath, 'static', 'upload')
-
# 可以拿到文件名,但是是客户端定义的名,不要相信这个名称,用secure_filename包装一下
-
(upload_path+'/'+secure_filename())
-
# 这里的url_for 和jinja的前端用法不一样,可以忽略.的引用
-
# url_for重定向
-
return redirect(url_for('uploads'))
-
return render_template('')
cookie设置
-
@('/index')
-
def index():
-
response = make_response(render_template('',title='Index'))
-
reqparse.set_cookie('username', '')
-
return response
自定义错误页面
-
from flask import abort
-
@(404)
-
def page_not_not_found(error):
-
return render_template(''), 404