Django项目创建的准备工作【 2 】

【 一 】调整后端目录

#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   
    • image-20240509163509880

image-20240509163311492

# 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'

    • image-20240509163206804

  • 从环境变量找--》找不到

  • 原来为什么能找到? 原来在项目根路径下,项目根路径在环境变量中

【 四 】把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

  • image-20240509170209646

image-20240509165844882

image-20240509171823026

  • 这样就是显示找不到运行报错:No module named 'user'

  • image-20240509172749192

  • 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运行配置

image-20240509184256732

  • 重新添加文件配置查看settings.py/lufy.setting.dev是否添加成功!!

  • 还是不行重启项目

  • ctrl + alt + s 搜索 Django

image-20240509184648060

  • 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()
    ​

image-20240509185523499

【 六 】最终的配置文件

  • 以后我们导入项目中的模块和包,只需要从 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)
​
  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值