flask的简单使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.安装flask
pip install flask

2.新建一个py项目,并实例化获得一个flask对象
eg:
from flask import Flask,request,redirect
app = Flask(__name__)

3.写一个函数
@app.route('/')
def hello_world():
return 'Hello World!'

4.启动服务
if __name__ == '__main__':
app.run(host='127.0.0.1',port=4000)

flask返回页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1.重定向
1.导入redirect
from flask import redirect
2.在对应的函数中返回
@app.route('/')
def hello_world():
return redirect()

2.直接返回字符串
return '任意字符'

3.返回模板
1.导入render_template
from flask import render_template
2.返回
return render_template('index.html')

4.返回json格式字符串
1.导入jsonify
from flask import jsonify
2.返回
return jsonify({"username": "admin",})

flask函数中使用反向解析

1
2
3
4
5
6
7
8
9
10
11
12
在django中我们若要在函数中使用反向解析,我们使用的是reverse,而flask中则是url_for

导入:
from flask import url_for
参数:
endpoint --函数别名

eg:
@app.route('/index')
def index():
url=url_for('home')
return redirect(url) #重定向到endpoint为home的路径上去

flask的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
flask使用配置文件有多种方式
1.直接针对flask的对象进行配置,但是只能配两种
app=Flask(__name__)
app.secret_key='asdfasdfasdf4545322wefaaeaesfsad'
app.debug=True # 调试模式

2.给对象的config设置,可以设置所有配置文件
app.config['DEBUG']=True

3.通过配置文件进行配置
app.config.from_pyfile("settings.py")

4.通过环境变量进行配置
os.environ['DEBUG']='ddd'
app.config.from_envvar(os.environ['DEBUG'])

5.通过json格式文件进行配置
app.config.from_json("setting.json")

6.通过字典进行配置
app.config.from_mapping({'DEBUG': True})

7.通过类配置
app.config.from_object('settings.ProductionConfig') #在settings文件夹中写一个类即可
class Config(object):
DEBUG = False
TESTING = False
DATABASE_URI = 'xxxx'
USER='root'
PASSWORD='123'

class ProductionConfig(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
USER = 'luffy'
PASSWORD = 'luffy?'

flask的默认配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
'DEBUG': get_debug_flag(default=False), 是否开启Debug模式
'TESTING': False, 是否开启测试模式
'PROPAGATE_EXCEPTIONS': None,
'PRESERVE_CONTEXT_ON_EXCEPTION': None,
'SECRET_KEY': None,
'PERMANENT_SESSION_LIFETIME': timedelta(days=31),
'USE_X_SENDFILE': False,
'LOGGER_NAME': None,
'LOGGER_HANDLER_POLICY': 'always',
'SERVER_NAME': None,
'APPLICATION_ROOT': None,
'SESSION_COOKIE_NAME': 'session',
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_REFRESH_EACH_REQUEST': True,
'MAX_CONTENT_LENGTH': None,
'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12),
'TRAP_BAD_REQUEST_ERRORS': False,
'TRAP_HTTP_EXCEPTIONS': False,
'EXPLAIN_TEMPLATE_LOADING': False,
'PREFERRED_URL_SCHEME': 'http',
'JSON_AS_ASCII': True,
'JSON_SORT_KEYS': True,
'JSONIFY_PRETTYPRINT_REGULAR': True,
'JSONIFY_MIMETYPE': 'application/json',
'TEMPLATES_AUTO_RELOAD': None,

}

flask默认拥有的转换器

1
2
3
4
5
6
7
8
9
DEFAULT_CONVERTERS = {
'default': UnicodeConverter, #默认不填属性时设置的
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}