flask返回json响应
一般并不直接使用json模块的dumps()、load()等方法,因为Flask通过包装这些方法提供了更方便的jsonify()函数。借助jsonify()函数,仅需要传入数据或参数,它会对我们传入的参数进行序列化,转换成JSON字符串作为响应的主体,然后生成一个响应对象,并且设置正确的MIME类型。
from flask import jsonify
@app.route('/foo')
def foo():
return jsonify(name='Green Li', gender='male')
jsonify()函数也可以接受普通参数或者直接传入字典,列表或元组,例如:jsonify({'name':'Green Li', 'gender':'male'})
上面两种形式的返回值都是这样的json字符串:'{"gender":"male","name":"GreyLi"}'
jsonify()函数依赖于上下文,函数内部调用中使用了current_app变量.所以只能在视图函数中使用。
使用python-dotenv 来管理flask环境变量
pip install python-dotenv
在项目根目录下分别创建两个文件:.env
和.flaskenv
..flaskenv
用来管理和flask相关的公开环境变量,例如FLASK_APP=
而.env
用来存储包含敏感信息的环境变量,例如email的账号密码.
每行定义一个变量. 注释用#
开头.
.env包含敏感信息,除非是私有项目,否则绝对不能提交到Git仓库中, 需要把它的名称添加到.gitignore文件中
深度复制拷贝
import copy
c = copy.deepcopy(a) # 把a复制给c
复制文件
from shutil import copyfile
copyfile(src, dst)
src:源文件
dst:目标文件
如: copyfile('./test.txt', '/home/gaosiqi/tmp/test.txt')
使用requirement.txt导入库
- 拷贝当前环境的第三方库
pip freeze >requirements.txt
- 在待克隆项目里, 下载上一步拷贝的库
pip install -r requirements.txt
修改pip默认python版本
-
which pip
查看pip文件路径 -
which python3
,查看当前使用的python3路径 -
mac修改python默认为python3
-
which python3
找到python3的路径/usr/local/bin/python3
- 修改配置文件:
vim ~/.zshrc
,在最后添加一行:alias python=/usr/local/bin/python3
修改csv文件指定位置内容
#读取文件
mm = csv.reader(open("./projectInfo.csv"))
lines = [ l for l in mm]
print(lines) # 输出一个二维数组: [['appId', 'interfaceId', 'serviceId', 'owner', 'cookie', 'req_url'], ['72', '460', '1905', '5832', '3333', '55']]
#修改指定位置
lines[1][0] = '882'
lines[1][1] = '460'
lines[1][2] = '1905'
print(lines)
#写回文件
writer = csv.writer(open('./projectInfo.csv','w'),lineterminator='\n')
writer.writerows(lines)
字符串插值方式,f-string
user= "jane done"
action = "buy"
log_mess = f'user jefje {user} ejfesfhah {action} jwefjeasfj'
print(log_mess) #user jefje jane done ejfesfhah buy jwefjeasfj
Python 3提供了pathlib作为处理文件路径字符串的便捷工具库
from pathlib import Path
root = Path('post_sub_folder')
print(root) #post_sub_folder
path = root / 'happ_uer'
print(path) #post_sub_folder/happ_uer
print(path.resolve()) #绝对路径 /private/var/folders/bn/2xxxn/T/CodeRunner/post_sub_folder/happ_uer
虚拟环境
- 安装包:
pip install virtualenv
- 创建虚拟环境:
virtualenv venv
||python3 -m venv venv
- 激活虚拟环境:
source venv/bin/activate
(windows:venv\Scripts\activate
) - 关闭虚拟环境:
deactivate
在 Python 3 中,虚拟环境由Python 标准库中的 venv 包原生支持。
Ubuntu Linux 系统预装的 Python 3,标准库中没有 venv 包。执行下述命令安装 python3-venv 包:$ sudo apt-get install python3-venv
Flask 1.0 设置环境变量的方法
在Flask1.0 后的版本中,在代码中添加 Debug=True 或者 在 Config 中添加DEBUG=True 来开启Debug 的模式可能已经失效 .
- windows powershell:
$env:FLASK_DEBUG = 1
$env:FLASK_ENV = "development"
$env:FLASK_APP = "flasky.py"
内网使用Bootstrap无法渲染
bootstrap默认使用外网cdn,,如果无法联网就会导致这种情况。可以在初始化之前加一行代码,使之加载本地的cdn
app.config['BOOTSTRAP_SERVE_LOCAL']=True #默认本地加载
bootstrap.init_app(app)
报错解决方式
pip相关
从自己搭的源下载flask-wtf
时,提示ERROR: Cannot unpack file /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-unpack-gmrl3v_9/simple.htm (downloaded from /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-req-build-5znzrjo3, content-type: text/html); cannot detect archive format ERROR: Cannot determine archive format of /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-req-build-5znzrjo3
解决: 安装命令由-i
改为--index-url
:pip3 install --index-url http://xx.xx.xx.xx:8081/repository/my_group/simple flask-wtf --trusted-host xx.xx.xx.xx
websocket相关
提示: ImportError: cannot import name 'create_connection' from 'websocket'
原因: 在使用create_connection
之前要安装 websocket_client
解决: pip install websocket_client
删除字符串两端引号
a='"string"'
print(a) # => "string"
b=eval(a)
print(b) #=>string
提取字符串内指定字符
import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#输出['123']