【 一 】调整后端目录
#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
文件 -
# 加上dev os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev')
import os import sys def main(): """Run administrative tasks.""" # 加上dev os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lufy.settings.dev') try: from django.core.management import execute_from_command_line except 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 exc execute_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)