Flask Web学习笔记之Flask与HTTP
args
,cookies
,data
,form
,files
,json
,method
,user_agent
,get_json()
等等flask routes
查看路由@app.route('/hello',methods=['GET','POST'])
def hello():
return "<h1>Hello,Flask!</h1>"
转换器 | 说明 |
---|---|
string | 不包含斜线的字符串(默认值) |
int | 整型 |
float | 浮点数 |
path | 包含斜线的字符串,static路由的URL规则中的filename变量就是使用了这个转换器 |
any | 匹配一系列给定值中的一个元素 |
uuid | UUID字符串 |
<转换器:变量名>
,例如:<int:year>
@app.route('/hello/<int:year>')
def hello():
return '<p>hello,I am %d years old!</p>'%(year-2019)
<any(value1,value2...):变量名>
@app.route('/colors/<any(blue,white,red):color>')
def three_colors(color):
return '<p>You choose %s</p>'%color
钩子 | 说明 |
---|---|
before_first_request | 注册一个函数,在处理第一个请求前运行 |
before_request | 注册一个函数,在处理每个请求前运行 |
after_request | 注册一个函数,如果没有未处理的异常抛出,会在每个请求结束后运行 |
teardown_request | 注册一个函数,即使有未处理的异常抛出,会在每个请求结束后运行。如果发送异常,会传入异常对象作为参数到注册的函数中 |
after_this_request | 在注册函数内注册一个函数,会在这个请求结束后运行 |
@app.before_request
def do_something():
pass #这里的代码会在每个请求处理前执行
类型 | 状态码 | 原因短语 | 说明 |
---|---|---|---|
成功 | 200 | OK | 请求被正常处理 |
201 | Created | 请求被处理,并创建了一个新资源 | |
204 | No Content | 请求处理成功,但无内容返回 | |
重定向 | 301 | Moved Permanently | 永久重定向 |
302 | Found | 临时性重定向 | |
304 | Not Modified | 请求的资源未被修改,重定向到缓存的资源 | |
客户端错误 | 400 | Bad Request | 请求无效,即请求报文中存在错误 |
401 | Unauthorized | 表示请求的资源需要获取授权信息,在浏览器中会弹出认证弹窗 | |
403 | Forbidden | 请求的资源被服务器拒绝访问 | |
404 | Not Found | 服务器上无法找到请求的资源或者URL无效 | |
服务器端错误 | 500 | Internet Server Error | 服务器内部发送错误 |
from flask import Flask,redirect
@app.route('/hello')
def hello():
return redirect('http://justlovesmile.top')
from flask import Flask,redirect,url_for
@app.route('/hi')
def hi():
...
return redirect(url_for('hello'))
@app.route('/hello')
def hello():
...
from flask import Flask,abort
@app.route('/404')
def not_found():
abort(404)
Content-Type: text/html;charset=utf-8
from flask import Flask
from flask import make_response
@app.route('/foo')
def foo():
response=make_response('Hello World')
response.mimetype='text/plain'
return response
text/plain
text/html
application/xml
application/json
dumps()
和load()
等方法,并且Flask提供了包装好的更方便的jsonify()
函数
from falsk import Flask,make_response,json
@app.route('/foo')
def foo():
data={
'name':'justlovesmile',
'gender':'male'
}
response=make_response(json.dumps(data))
response.mimetype='application/json'
return response
等价于
from flask import Flask,jsonify
@app.route('/foo')
def foo():
return jsonify({name='justlovesmile',gender='male'})
@app.route('/foo')
def foo():
return jsonify({name='',gender=''}),500