jinja2.exceptions.UndefinedError
jinja2.exceptions.UndefinedError: 'moment' is undefined
[2018-7-22]问题描述:flask-moment扩展,在宏macro中不能用,在include中可以用
解决方案:在导入宏的地方,导入带上下文的宏
{% import "_macros.html" as macro with context %}
做一个根据搜索条件返回结果的搜索的时候,一点搜索就一直报错,搜索条件里有单选组
[2018-7-25]问题描述:我在模型类的取回结果方法中,使用了if search_condition,如果选中了某个单选钮,就添加筛选条件,但是一直报错,说数据库不能getNone
,判断逻辑代码类似:
if outdoor :
t = OutdoorType.query.get(int(outdoor))
activities = t.activities
经过排查发现,form.outdoor.data是str类型的,如果没有选中,这个值就是None,字面的None,不是空类型,代码改为:
if outdoor != 'None':
t = OutdoorType.query.get(int(outdoor))
activities = t.activities
使用bootstrap的row和col在模板页中左右布局,经常出现有的显示正常,有的“崩坏”右侧栏显示到新的row
[2018-7-26]问题描述:同一个文章页面,时而正常时而崩坏,如图右侧导航蹦到新的row
解决方案:是由于html中写了很多{% if xxx %}
等代码块,有的正好if开始块写在内,if结束块写在了
外,所以最终生成的html可能造成左侧内容col布局被if块外侧的
给提前闭合了!,自然右侧的col布局就下来了
builtins.TypeError
TypeError: int() argument must be a string, a bytes-like object or a number, not 'method'
[2018-7-29]问题描述:报错如上总有自己做出来些傻逼Bug....自己给自己挖坑,这个就是,这个报错我调试了一个多小时...才发现自己多傻逼,然后今天一天一半时间都在调自己写的逻辑坑...
解决方案:会报这个错是因为我在模板HTML中链接中用了href="{{ url_for('team.activity_confirm', id=activity.unpaid_id) }}"
,然后这个view只接受int参数,所以构建模板的时候报错,我一直以为是sql写错了....
最后发现是...模型类里面的unpaid_id我写成了方法,而这里引用的是个属性....给模型类中的方法加上@property
终于世界安静了...
@property
def unpaid_id(self, user=current_user):
return self.joins.filter_by(user_id=user.id, state=False).first().id
builtins.AttributeError
AttributeError: 'UnboundField' object has no attribute 'call'
builtins.AttributeError
AttributeError: 'ActivityJoinForm' object has no attribute '_fields'
【2018-7-29】问题描述:永远死在最简单的问题上...生成模板的时候一直报这俩个错
解决方案:自定义Form的__init__
函数忘记调用 super()
先让Form的__init__
初始化form了...
另外调试中还发现一个小问题,就是我经常做判断的时候用如 if activity.solutions
这种语句,但是因为solutions是个relationship,是个sql对象,所以判断永远是True
AttributeError: 'str' object has no attribute 'data'
【2018-7-29】问题描述:我把form传到了model类中,来更新数据,出现了上面这个报错
解决方案:由于我的自定义模型类中属性名和form的一个字段名重名,所以报错,更改form的字段名即可。但是为啥我在模型类方法中用form.phone.data
会报错呐?都限定着的,编译器为啥觉得这个phone是属性phone...想不明白
挂一个TODO
ValueError: unknown resampling filter
【2018-7-31】问题描述:我在用pillow扩展的时候报错
解决方案:我的错误代码是img=img.resize(w,h)
,这里参数错了,参数应该是个宽高的元组,img=img.resize((w,h))
,另外需要注意的是Pillow中的好多方法都不是在原图上修改,都需要再赋值才能保存修改
AttributeError: 'Query' object has no attribute 'paginate'
[2018-8-1]问题描述:我要同时取两个Model的数据,一开始我用all()全取出来的时候没有问题,后来换成paginate就报错了
原始报错代码:
db.session.query(JoinActivity, ActivityContact).filter(
JoinActivity.id==ActivityContact.join_id,
JoinActivity.activity_id==activity_id).paginate(page)
这是因为使用db.session.query查询对象,背后用过得是sqlalchemy的query
类,而 model.query
使用的是flask-sqlalchemy的 BaseQuery
类,这个类继承自query
,添加了很多注入paginate()
的辅助方法,所以这个查询会报错,如果想在db.session.query
中实现分页,需要手动使用limit()
,offset()
方法,但是它又反不会Pagination对象....所以前端的分页也要重新做....总之是非常之麻烦的感觉,这个先放一放,我先用all(),回头再改成分页
挂一个TODO#2
502 bad gateway
【2018-8-6】问题描述:在最新一次服务器更新时,nginx显示502错误,nginx报错,就是后端服务器有错
解决方案:我这里是因为新安装了flask-mail扩展,但是服务器没有装。导致重启gunicorn的时候出错没启动,这里就不能再Kill -HUP了,需要新启动一个gunicorn
去掉所有链接鼠标划过的下划线
几多小的问题,但是我用了a:hover { text-decoration:none;}
之后就是不管用!鼠标划过还是一直有下划线,看着好难受,只好提高优先级...来取消全站的链接下划线a:hover { text-decoration:none!important;}
RSA key format is not supported
【2018-08-11】问题描述:在使用Python-alipay-sdk包接入支付宝支付时,使用了app_secret_key_string初始化Alipay的时候,一直报错,一开始我以为是秘钥生成错了,就下载了Openssl重新生成秘钥,结果还是报这个错,查看了下包的源码,是RSA.importKey方法报错,然后我自己调用了下这个方法也是报错
解决方案:后来我试了下直接从Key文件里面导入秘钥
key_path=os.path.join(os.getcwd(), 'key','app_secret_key')
with open(key_path) as fp:
key_string = fp.read()
RSA.importKey(key_string)
就正确显示了,但是因为我是直接输出到了HTML测试,又报错RsaKey is not callable,因为生成的是个RsaKey对象,str()了一下就在页面中显示了,所以在用python-alipay-sdk包的时候要使用app_secret_key_path
,不要使用app_secret_key_strin
g.
zTree插件不显示
【2018-8-22】问题描述:第一次接触zTree,然而页面一直不显示,检查了好多遍DEMO,完全不知道为啥$.fn.zTree.init($("#tree"), setting, zNodes);
就是不运行
解决方案:我之前把引用ztree的Js写到
里面了,改到scripts块就好了....应该是开始运行这行代码的时候,ztree还没有加载出来
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 0: invalid start byte
[2018-8-28]问题描述:换了个电脑部署开发环境,结果python manage.py runserver
的时候报上述错误,python manage.py shell
却没问题;同时pip安装包的时候也报了类似的UnicodeDecodeError
错误
解决方案:计算机名有中文...把计算机名改成英文就可以runserver了;pip时报错的解决方案是:把python36文件夹下的lib\site-packages\pip\compat_init_.py文件中的return s.decode('utf-8')
改成return s.decode('cp936')
,这里需要注意一下搜索这个文件的utf-8有3处,只修改return s.decode('utf-8')
这一处的编码方式,另外的不用修改!
UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: Illegal byte sequence
[2018-9-1]问题描述:将日期格式化显示的语句报错self.fill_date.strftime('%Y年%m月%d日')
解决方案:self.fill_date.strftime('%Y{y}%m{m}%d{d}').format(y='年',m='月',d='日')