【4.0】路飞项目后端搭建

发布时间 2023-08-19 17:00:11作者: Chimengmeng

【一】创建django项目的两种方式

  • 创建 Django 项目有两种常用的方式
    • 一种是通过命令行,另一种是通过 PyCharm。

【1】命令行方式:

  • 打开终端或命令提示符,并进入你想要创建项目的目录。

  • 在命令行中输入以下命令:django-admin startproject 项目名

    • 其中,项目名是你为项目指定的名称,可以自己定义。
  • 执行该命令后,Django 将在当前目录下创建一个新的项目文件夹,该文件夹的名称就是你所指定的项目名。

  • 进入项目文件夹,你将看到一个名为 manage.py 的文件和一个与项目名相同的文件夹。这个文件夹将包含项目的所有代码文件和配置。

【2】PyCharm 方式:

  1. 打开 PyCharm,点击 "Create New Project" 或选择 "File -> New Project"。
  2. 在创建项目窗口中,选择左侧的 "Django"。
  3. 在右侧的选项中,填写项目名和选择项目存放的位置。
  4. 选择 "Create a new virtual environment",这将为你的项目创建一个独立的 Python 虚拟环境,以便于管理项目依赖。
  5. 在 "Django-specific settings" 部分,选择 "New application" 并输入应用程序名称,这将在项目中创建一个 Django 应用。
  6. 点击 "Create" 完成项目创建。

【二】调整目录结构

├── luffyCity
    ├── logs/				# 项目运行时/开发时日志目录 - 包
    ├── manage.py			# 脚本文件
    ├── luffyCity/      		# 项目主应用,开发时的代码保存 - 包
     	├── apps/      		# 开发者的代码保存目录,以模块[子应用]为目录保存 - 包
        ├── libs/      		# 第三方类库的保存目录[第三方组件、模块] - 包
    	├── settings/  		# 配置目录 - 包
			├── dev.py   	# 项目开发时的本地配置
			└── prod.py  	# 项目上线时的运行配置
		├── urls.py    		# 总路由
		└── utils/     		# 多个模块[子应用]的公共函数类库[自己开发的组件]
    └── scripts/       		# 保存开发项目的脚本文件 - 文件夹

【三】创建APP

【1】切换到apps目录下

(venv) PS E:\Old Boy\luffy\luffyCity\luffyCity\apps>

【2】命令

python ../../manage.py startapp home

【3】注册APP

(1)注册方式一

  • 需要修改相关文件的内容
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'luffyCity.apps.home'
]
  • 可能会报错
django.core.exceptions.ImproperlyConfigured: Cannot import 'home'. Check that 'luffyCity.apps.home.apps.HomeConfig.name' is correct.
  • 修改指定文件内容

    • luffyCity\luffyCity\apps\home\apps.py
    from django.apps import AppConfig
    
    
    class HomeConfig(AppConfig):
        default_auto_field = 'django.db.models.BigAutoField'
        name = 'luffyCity.apps.home'  # 这里修改为注册APP的路径即可
    

(2)注册方式二

  • 把APP路径添加到环境变量
import os
import sys

# 项目根目录 - 项目根目录发生了更改
BASE_DIR = Path(__file__).resolve().parent.parent
# 因为 dev 的位置又深了一层,导致根目录发生变化
# 旧 :E:\Old Boy\luffy
# 新 :E:\Old Boy\luffy\luffyCity

# 将新的根目录添加到系统环境变量
sys.path.insert(0, str(BASE_DIR))
# 导入APP下的文件可以直接导入,否则需要加 luffyCity. 前缀

# 将 APP目录添加到系统环境变量
APP_DIR = os.path.join(BASE_DIR, 'apps')
# 添加系统环境变量
sys.path.insert(0, APP_DIR)
# 注册APP下的app可以直接写名字,而不用具体的路径

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 'luffyCity.apps.home'
    'home'
]

【四】设置两套配置文件

  • 所有项目,都会有多套配置文件
  • 开发阶段配置
  • 上线阶段配置

【1】创建settings文件夹

【2】本地配置文件

(1)命名

  • dev.py(本地的settings文件)

(2)路径报错解决办法

  • django项目运行,优先运行settings.py 配置文件

  • 命令运行

    • python manage.py runserve
    • 所以,manage中的配置文件路径要正确
  • 修改 manage.py 文件

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyCity.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)


if __name__ == '__main__':
    main()
  • 启动项目发现提示
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
  • 解决办法
    • 删除当前配置文件启动配置

  • 移除并新增一个启动配置

  • 如果上述问题仍然存在

    • File | Settings | Languages & Frameworks | Django
  • 修改 settings 文件路径

    • 自己的配置文件位置

【3】上线配置文件

  • 重要:项目上线,不使用manage.py 运行

    • 使用uwsgi运行wsgi.py 文件

    • 修改这个文件的配置

      • asgi.py

        import os
        
        from django.core.asgi import get_asgi_application
        
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyCity.settings.prod')
        
        application = get_asgi_application()
        
      • wsgi.py

        import os
        
        from django.core.wsgi import get_wsgi_application
        
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyCity.settings.prod')
        
        application = get_wsgi_application()
        
  • 配置文件指定 prod.py 以后上线使用这个配置文件

【补充】运行Django项目文件错误解决

【一】路径配置要正确

  • dev.py
import os
import sys

# 项目根目录 - 项目根目录发生了更改
BASE_DIR = Path(__file__).resolve().parent.parent
# 因为 dev 的位置又深了一层,导致根目录发生变化
# 旧 :E:\Old Boy\luffy
# 新 :E:\Old Boy\luffy\luffyCity

# 将新的根目录添加到系统环境变量
sys.path.insert(0, str(BASE_DIR))
# 导入APP下的文件可以直接导入,否则需要加 luffyCity. 前缀

# 将 APP目录添加到系统环境变量
APP_DIR = os.path.join(BASE_DIR, 'apps')
# 添加系统环境变量
sys.path.insert(0, APP_DIR)
# 注册APP下的app可以直接写名字,而不用具体的路径
  • manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyCity.settings.dev')
# 将配置文件目录进行更新

【二】删除启动配置项并重置

  • 删除启动项

1

  • 新建启动项

2

【三】新建启动项仍无法启动

  • 修改pycharm配置文件
    • File | Settings | Languages & Frameworks | Django
  • 路径选择我们修改后的dev.py文件路径

3