无数据库场景下如何使用Django?是否适用?
无数据库场景的Django选型结论
Django完全可以在无数据库的场景下使用,不存在功能限制。
很多人对Django的刻板印象是强绑定数据库,本质是默认初始化的项目带了大量依赖数据库的内置模块(admin后台、用户认证系统、session存储、contenttype权限体系等),只要把这些非必须模块裁剪掉,Django的路由解析、请求处理、响应封装能力完全可以独立支撑纯API转发、加工的业务场景。
如果你本身已经熟悉Django的开发逻辑,不需要为了“无数据库”这个需求特意换Flask、FastAPI之类的轻量框架;如果项目还没启动、追求极致轻量启动速度,再考虑其他框架即可。
无数据库Django项目的具体配置方法
所有配置都围绕「剔除所有数据库依赖模块」的核心做修改,步骤如下:
- 初始化完Django项目后,首先精简
settings.py里的INSTALLED_APPS配置,删掉所有带数据库依赖的内置app
精简后的参考配置:INSTALLED_APPS = [ # 静态文件托管模块,前后端分离部署、前端静态资源不走Django服务的话可以直接删掉 'django.contrib.staticfiles', # 如果你用DRF(Django REST Framework)写REST接口,保留这行 'rest_framework', # 你自己写的业务逻辑app 'your_custom_app', ] - 精简中间件配置,删掉依赖数据库的session、认证类中间件
精简后的参考配置:MIDDLEWARE = [ 'django.middleware.common.CommonMiddleware', # 前后端分离用token鉴权、不需要csrf校验的话可以把下面这行也注释掉 'django.middleware.csrf.CsrfViewMiddleware', ] - 修改数据库配置为内存级SQLite,避免生成本地数据库文件,也不会有任何磁盘持久化写入
配置参考:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:', } } - 正常开发业务逻辑即可:在视图层编写公共API调用、数据加工的逻辑,处理完成后直接返回JSON格式响应,整个流程完全不会触发数据库操作。因为没有引入任何带数据模型的app,执行
python manage.py migrate也不会生成任何数据表,不会有额外开销。
注意:如果后续需要加限流、缓存能力,不要选数据库作为存储后端,直接选内存缓存或者Redis即可,和当前配置完全兼容。
内容的提问来源于stack exchange,提问作者oscar-lauth
相关产品推荐
相关产品推荐

