【一】创建django项目的两种方式
- 创建 Django 项目有两种常用的方式
- 一种是通过命令行,另一种是通过 PyCharm。
【1】命令行方式:
-
打开终端或命令提示符,并进入你想要创建项目的目录。
-
在命令行中输入以下命令:
django-admin startproject 项目名
。- 其中,
项目名
是你为项目指定的名称,可以自己定义。
- 其中,
-
执行该命令后,Django 将在当前目录下创建一个新的项目文件夹,该文件夹的名称就是你所指定的项目名。
-
进入项目文件夹,你将看到一个名为
manage.py
的文件和一个与项目名相同的文件夹。这个文件夹将包含项目的所有代码文件和配置。
【2】PyCharm 方式:
- 打开 PyCharm,点击 "Create New Project" 或选择 "File -> New Project"。
- 在创建项目窗口中,选择左侧的 "Django"。
- 在右侧的选项中,填写项目名和选择项目存放的位置。
- 选择 "Create a new virtual environment",这将为你的项目创建一个独立的 Python 虚拟环境,以便于管理项目依赖。
- 在 "Django-specific settings" 部分,选择 "New application" 并输入应用程序名称,这将在项目中创建一个 Django 应用。
- 点击 "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')
# 将配置文件目录进行更新
【二】删除启动配置项并重置
- 删除启动项
- 新建启动项
【三】新建启动项仍无法启动
- 修改pycharm配置文件
File | Settings | Languages & Frameworks | Django
- 路径选择我们修改后的
dev.py
文件路径