flask踩坑和排坑记录

本文分享了作者从Django转向Flask的开发经历,并详细介绍了使用Flask进行博客项目开发的过程,包括环境搭建、数据库配置及用户登录等功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开篇

最近学习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的使用技巧:

  • 路径:

    MySQL: mysql+pymysql://username:password@hostname/database
    Postgres: postgresql://username:password@hostname/database
    SQLite(Unix): sqlite:////absolute/path/to/database
    SQLite(Windows): sqlite:///c:/absolute/path/to/database

  • 初始化:

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: 加以判断即可.

转载于:https://www.cnblogs.com/koonchung/p/9200502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值