阿小信大人的头像
做你说过的,说你能做的 阿小信大人

Flask中日志按照日志级别分开保存到不同文件2017-11-21 19:17

目标是想让代码中的日志按照不同的级别保存到不同的文件,即不管是框架本身的debug日志还是我们自己写的debug日志都保存到debug.log,info日志都保存在info.log,以此类推。

如果是为不同级别设置不同的logger,每个logger对应不同的文件handler,然后封装自己的日志函数调用对应的logger来记录日志确实是可以记录到不同的文件,但是这样只能记录自己代码中打的log而不会记录flask框架打印的log,因为框架使用的logger名称和我们使用的logger不一样,要达到我们的目标不能在logger上做处理,应该对和框架同一个logger上的handler做处

......
#Python#   #flask 评论[0]阅读全文[952]

flask通过nginx代理后base_url拿不到正确的url_scheme2016-04-14 12:31

Nginx配置了https请求后,用户发起https请求时首先和Nginx建立连接,完成SSL握手,而后Nginx作为代理是以http协议将请求转给gunicorn处理的,Nginx再把gunicorn的输出通过SSL加密发回给用户,这中间是透明的,gunicorn只是在处理http请求而已。

这时即使请求时用的是https,flask中的request中`wsgi.url_scheme`收到的仍然是http,所以在其他url相关的地方的值都是http链接。

解决办法是在flask中使用ProxyFix,并且确保nginx配置中设置了`Host`和`X-Forwarded-Prot

......
#Python#   #flask 评论[0]阅读全文[1403]

flask处理ajax跨域请求2015-09-11 18:31

前后端的分离不得不涉及到ajax请求的跨域问题。

前端在发起ajax请求时,浏览器会先发一个options请求来试探后端,如果response headers里面的信息允许这个请求才会进行接下来真实的请求。

一般的跨域问题只需在response headers中设置`Access-Control-Allow-Origin`为指定的域名或者`*`就能解决,如:

headers = {"Access-Control-Allow-Origin": "*"}
return Response(json_dumped, mimetype='application/jso

......
#Python#   #flask 评论[0]阅读全文[3430]

Flask-SQLAlchemy的一点问题记录2015-09-11 18:15

### Flask-sqlalchemy查询指定字段

your_model_object.query.with_entities(Your_model.your_attribute)

类似于sqlalchemy的

session.query(Your_model.your_attribute).filter(...)

返回的是一个namedtuple

### flask-sqlalchemy MySQL server has gone away

MySQL默认移除闲置多于 8 小时的连接。使用 Flask-SQLALchemy 连接了 MyS

......
#Python#   #flask 评论[4]阅读全文[2535]

flask视图函数的装饰器必须用到wraps2015-09-11 17:38

之前遇到一个一直没意识到得问题。为flask的视图添加装饰器需要注意的一点是必须使用wraps。

wraps的作用之一是改变函数的`__name__`

如果你的装饰器不用wraps,那么使用装饰器后原本不同两个函数的名字都变成了相同的名字。在flask的视图中这样会造成函数名冲突,提示

AssertionError: View function mapping is overwriting an existing endpoint function

所以装饰器应该写成

:::python
def login_required(func):

......
#Python#   #flask 评论[0]阅读全文[1521]

Flask在注册蓝图时4042015-05-21 11:22

结构是这样的

project_dir
|__ other_dirs
|__ apps
| |__ app1
| | |__ __init__.py
| | |__ script1.py
| | |__ script2.py
| |__ app2
| |__ __init__.py
| |__ script1.py
|__ server.py
|__ settings.py
|__ other_files

......
#Python#   #flask 评论[0]阅读全文[1217]

Nginx+Flask配置upstream时需要在localtion中设置Host2014-12-01 13:39

环境是这样的:

Flask+Gunicorn+Nginx搭建的网站,有个邮件验证功能,发送出去一个链接,这个链接是通过

:::python
link = url_for('.verify', payload=payload, _external=True)

生成的,

nginx最开始配置如下:

:::nginx
upstream fy_com {
server 0.0.0.0:1248;

keepalive 600;
}

server {
list

......
#Python#   #flask #nginx 评论[0]阅读全文[1450]

Flask Ajax上传文件2014-11-20 17:26

需求是在上传文件前,当选择了文件后要在页面上显示选择的文件的文本行数。

网页表单如下:

:::html

...
题目文件

...
提交

js:

:::javascript

$('#question_file').change(function(){
var form_data = new FormData($('#form1')[0]);
//$('#form1')是个list,所以

......
#Python#   #jquery #flask 评论[0]阅读全文[2233]