Django ORM独立使用探索
感觉Django ORM不错,如果能独立出来,方便使用于其它的应用(甚至非Web应用),无疑对开发带来很大的便宜。
分析Django项目的结构
DjangoProjectName(Folder)
manage.py
DjangoProjectName(Folder)
__init__.py
settings.py
AppName(Folder)
models.py
migrations(Folder)
__init__.py
在DjangoProjectName.settings.py中保留以下设置:
SECRET_KEY
INSTALLED_APPS(只留下AppName,其它的删除)
DATABASES
EFAULT_AUTO_FIELD
在models中添加类
运行python manage.py makemigrations
python manage.py migrate
能够成功在数据库中建立表
在数据库中建立数据表,然后运行python manage.py inspectdb>models.py
也能成功从数据库中的表生成models类
新建一个python文件,来测试使用ORM类,结果出现错误,程序会models的base类中检测app是否装载(python manage.py runserver),注释掉后直接赋值app_label变量,仍有其它错误,什么基它的设置,比如database,template相关的,难道要使用models类真难吗?
后发现运行python manage.py shell
在这样的交互环境里,可以正常使用ORM类!!!
shell继承于basecommand,在shell中有一句:
requires_system_checks = False
在从此出发.....
settings 中的
BASE_DIR项要保留
在运行的py文件中引入:
import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM.settings")
django.setup()
import orm_app.models
OK,搞定!
对于项目下的manage.py文件,可以用下面的方式替代
from django.apps import apps
from django.conf import settings
from django.core.management import call_command
apps.populate(settings.INSTALLED_APPS)
print("----------apps.populate----------")
def migrate(app_name: str):
call_command("migrate", app_name)
def make_migrations(app_name: str):
call_command("makemigrations", app_name)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现