因为flask的app对象被封装在了web/_init_.py中的工厂方法create_app中,所以需要进行一些设置才可以运行
- 在Pycharm中对Flask server设置(可断点调试):
- 打开Edit Configuration
- 设置Target type => Script path。
- 设置Target => web/_init_.py的完整路径。
- 在cmd中设置(无法断点调试):
- set FLASK_APP=web
- flask run
以上的方法大致类似,flask的自动搜索机制会自动从FLASK_APP的值定义的模块中寻找名称为create_app()或make_app()的工厂函数
- Bootstrap-Flask:
该库是对bootstrap4的简单封装,提供了几个常用的宏(jinja中的函数)。 官网:https://bootstrap-flask.readthedocs.io/en/latest/- flask-wtf:
flask-wtf是对form表单的封装,带有csrf令牌的安全表单。 官网:http://www.pythondoc.com/flask-wtf/- flask-mail:
简化发送邮件- flask-moment 简化时间的显示
- flask-login 简化登录
- flask-ckeditor
富文本编辑器
- 登录目前使用到了mongodb,对应的配置文件为web/config.py。
- 当用户登录成功后,会把user字典中的所有数据都保存在类为User的一个对象 受flask_login的影响,可以通过current_user来访问到这个对象。该对象可以通过 from flask_login import current_user来访问;在jinja中,直接访问current_user即可。
- 当用户登录成功后,每一次刷新页面,程序都会从数据库中查询是否 有自己的消息,如果有则显示,它已经注册到模板中,名称为unread_msg
- 应当避免使用session中的user_id 和remember_token字段
程序输出尽量使用logging库,这样在使用docker部署服务器时可以docker logs [name] 直接观察到输出的内容(logging.warning及以上)
目前使用到了docker-compose,会生成两个容器,分别是flask容器和nginx容器,但目前的容器通信存在一些问题。