flask踩坑和排坑记录

开篇

最近学习Django开发网页, 后来由于Django开发比较繁琐以及可迁移性较差, 于是转学flask, 从而有了这一篇文章, 顺便测试一下我的博客发文功能:P

项目依赖

虽然flask较Django更轻量, 版本间语法差别不大, 但还是会有一些小坑. 比如在使用flask-sqlalchemy时报错, 原因是版本过新或过旧, 另外flask的扩展包需要另外安装, 这里注意一下就行. 下面列出个人博客项目的安装依赖(python3.5&python3.6测试通过):

Flask_SQLAlchemy==2.1
Flask==1.0.2
Markdown==2.6.11
Flask_Bootstrap==3.3.7.1

数据库

数据库的使用是网页编写的一个非常重要的部分, 基本上读取, 存入, 登录, 注销等等操作都和数据库相关, 本项目使用sqlite3, 操作起来较为简单. 简单总结一下flask-sqlalchemy的使用技巧:

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///E:/code/Python/flask/Elvin_Blog/schema.sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
  • 操作语句:
User.query.all() # 搜索所有信息
User.query.get(id) # 搜索对应主键信息
User.query.filter_by(username='').all()
User.query.filter_by(username='').first()
db.session.add(User(username,password))
db.session.commit()
# 修改信息
User.query.filter_by(id=id).first().username='newusername'
db.session.commit()

自定义过滤器

我希望能将markdown格式的内容转化并直接显示, 这就需要用到flask的过滤器功能, 阅读了相关文章, 只需要自定义一个过滤器, 代码如下:

from flask import Markup
import markdown
@app.template_filter('toMarkdown')
def toMarkdown(content):
    return Markup(markdown.markdown(content))

通过jinja2调用时, 只需要 {{ content|toMartdown }} 即可.

用户登录与登出

通过MD5加密密码并保存在数据库, 使用flask的session, 登录成功后, 代码添加 session['username'] = username , 同理, 在进入一些诸如管理页面的页面时, 只需要添加 if 'username' in session: 加以判断即可.

猜你喜欢

转载自www.cnblogs.com/koonchung/p/9200502.html