【 一 】调整后端目录
#1 目录结构 """ ├── luffy_api├── logs/ # 项目运行时/开发时日志目录 - 包├── manage.py # 脚本文件├── luffy_api/ # 项目主应用,开发时的代码保存 - 包├── apps/ # 开发者的代码保存目录,以模块[子应用]为目录保存 - 包├── libs/ # 第三方类库的保存目录[第三方组件、模块] - 包├── settings/ # 配置目录 - 包├── dev.py # 项目开发时的本地配置└── prod.py # 项目上线时的运行配置├── asgi.py # 项目上线├── wsgi.py # 项目上线用├── urls.py # 总路由└── utils/ # 多个模块[子应用]的公共函数类库[自己开发的组件]└── scripts/ # 保存项目运营时,测试的脚本文件 - 文件夹 """
【 1 】创建app应用软件
【 2 】创建app
-
来到目录下:
-
# cd lufy/apps
-
创建user应用程序
-
# python ../../manage.py startapp user
# 2 创建app # 来到目录下: cd lufy/apps # 执行 python ../../manage.py startapp user # 3 项目中注册app-直接写app名字,运行报错:No module named 'user'-从环境变量找--》找不到-原来为什么能找到? 原来在项目根路径下,项目根路径在环境变量中# 4 把apps目录加入到环境变量 # 把apps目录加入到环境变量,以后注册app,只需要写名字即可 import sys,os BASE_DIR = Path(__file__).resolve().parent.parent apps=os.path.join(BASE_DIR,'lufy','apps') sys.path.insert(0,apps) ## 5 lufy--settings--》dev.py【开发阶段配置】 pro.py【上线阶段配置】-配置文件路径发生变化-项目要正常运行--》修改manage.py os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev')-命令可以运行-但是有可能点 绿色箭头运行不了--》删除--》重新新建即可-如果还不行--》settings--->django-->配置文件路径## 本地运行可以了,但是上线还有问题--》配置文件路径改了# asig.py wsgi.py 中的配置文件先改好# 如果不改,开发阶段,没有任何问题os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.pro')# 6 最终配置文件修改成 # 把apps目录加入到环境变量,以后注册app,只需要写名字即可 import sys,os # BASE_DIR 是 lufy BASE_DIR = Path(__file__).resolve().parent.parent apps=os.path.join(BASE_DIR, 'apps') sys.path.insert(0,apps) # 把apps目录加入到环境变量 sys.path.insert(0,BASE_DIR)# 把BASE_DIR--》小lufy目录加入到环境变量 # 以后我们导入项目中的模块和包,只需要从 apps开始导起或 小lufy目录开始导起 或 大 lufy # 优先相对导入-->使用绝对导入,尽量从最短路径开始导起# 7 国际化 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_TZ = False # 8 创建了user和home--》app### 注意### djanog项目运行,首先加载配置文件---》配置文件路径一定要对,否则项目启动不起来
【 3 】项目中注册app
-
直接写app名字,运行报错:No module named 'user'
-
从环境变量找--》找不到
-
原来为什么能找到? 原来在项目根路径下,项目根路径在环境变量中
【 四 】把apps目录加入到环境变量
第一种方法
添加完整的目录(这个目录太low!!)
-
settings.py文件
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','lufy.apps.user' # 直接创建应用软件就会报错# 添加完整的目录 ]
-
apps.py
from django.apps import AppConfig class UserConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'lufy.apps.user' # 这个也将目录地址添加完整!
第二种方法
-
把apps目录加入到环境变量,以后注册app,只需要写名字即可
-
settings.py文件
import sys, os BASE_DIR = Path(__file__).resolve().parent.parent # "项目名","软件名" apps = os.path.join(BASE_DIR, 'lufy', 'apps') sys.path.insert(0, apps) ... INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','user' # 直接使用app文件名就好了!!! ]
-
apps.py 这个文件就不需要更改了
from django.apps import AppConfig class UserConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'user'
【 五 】配置多套的配置文件
## lufy--settings--》dev.py【开发阶段配置】 pro.py【上线阶段配置】-配置文件路径发生变化-项目要正常运行--》修改manage.py os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev')-命令可以运行-但是有可能点 绿色箭头运行不了--》删除--》重新新建即可-如果还不行--》settings--->django-->配置文件路径## 本地运行可以了,但是上线还有问题--》配置文件路径改了# asig.py wsgi.py 中的配置文件先改好# 如果不改,开发阶段,没有任何问题os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.pro')
-开发阶段:配置不一样-上线阶段:配置不一样
-
先将原本的settings.py文件剪切 ---->>> 再lufy文件下创建settings文件 ---->>> 将settings.py复制 ---->>> 改名dev.py
-
这样就是显示找不到运行报错:No module named 'user'
-
在
manage.py
文件 -
# 加上devos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev')
import os import sys def main():"""Run administrative tasks."""# 加上devos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev')try:from django.core.management import execute_from_command_lineexcept ImportError as exc:raise ImportError("Couldn't import Django. Are you sure it's installed and ""available on your PYTHONPATH environment variable? Did you ""forget to activate a virtual environment?") from excexecute_from_command_line(sys.argv)
-
删除Django运行配置
-
重新添加文件配置查看settings.py/lufy.setting.dev是否添加成功!!
-
还是不行重启项目
-
ctrl + alt + s 搜索 Django
-
asig.py wsgi.py 中的配置文件先改好
-
如果不改,开发阶段,没有任何问题
-
# asig.py import os from django.core.asgi import get_asgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.pro') ... # wsgi.py import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.pro') application = get_wsgi_application()
【 六 】最终的配置文件
-
以后我们导入项目中的模块和包,只需要从 apps开始导起或 小lufy目录开始导起 或 大 lufy
-
优先相对导入-->使用绝对导入,尽量从最短路径开始导起
# 把apps目录加入到环境变量,以后注册app,只需要写名字即可 from pathlib import Path import os,sys BASE_DIR = Path(__file__).resolve().parent.parent # "项目名","软件名" apps = os.path.join(BASE_DIR,'apps') # 把apps目录加入到环境变量 sys.path.insert(0, apps) # 把BASE_DIR--》小lufy目录加入到环境变量 sys.path.insert(0,BASE_DIR)