Skip to content

Django - 创建项目

安装好 Django 后(参见环境设置),您就可以开始构建 Web 应用程序了。在 Django 术语中,Project(项目)代表一个完整的 Web 应用程序或网站。一个 Project 由一个或多个 App(应用)组成。App 是一个自包含的模块,提供特定的功能片段(例如,博客、用户投票系统、认证系统)。这种模块化结构有助于代码重用和组织。

打开您的终端或命令提示符,导航到您想存储代码的目录,然后运行以下命令:

$ django-admin startproject myproject

将 myproject 替换为您希望的项目名称。避免使用与内置 Python 或 Django 组件冲突的名称(例如,django、test)。

此命令将创建一个 myproject 目录,其初始结构如下:

myproject/ <-- 外部容器目录(可以重命名)
├── manage.py <-- 用于项目交互的命令行工具
└── myproject/ <-- 您的项目的实际 Python 包
├── __init__.py <-- 标记此目录为 Python 包
├── asgi.py <-- 用于异步 Web 服务器的 ASGI 入口点
├── settings.py <-- 项目配置设置
├── urls.py <-- 项目级别 URL 声明(目录)
└── wsgi.py <-- 用于 Web 服务器的 WSGI 入口点
  • 外部 myproject/ 目录: 项目的容器。它的名称对 Django 不重要;您可以随意重命名。
  • manage.py: 一个命令行工具,允许您与此 Django 项目交互。您会经常使用它来运行开发服务器、应用数据库迁移、创建应用、运行测试等。运行 python manage.py help 可获取可用命令列表。
  • 内部 myproject/ 目录: 您的项目的实际 Python 包。其名称用于 Python 导入(例如,import myproject.settings)。
  • __init__.py: 一个空文件,表示此目录应被视为一个 Python 包。
  • settings.py: 包含您的 Django 项目的所有配置,例如数据库设置、已安装的应用、中间件、模板引擎选项、静态文件位置、安全密钥等。
  • urls.py: 项目的主要 URL 分发器。它将传入的 URL 路由到相应的视图。可以将其视为您的 Django 驱动网站的目录。
  • wsgi.py: 用于 WSGI 兼容 Web 服务器(如 Gunicorn、uWSGI、mod_wsgi)来提供您的项目的入口点。WSGI(Web Server Gateway Interface)是同步 Python Web 应用程序的标准。
  • asgi.py: 用于 ASGI 兼容 Web 服务器(如 Daphne、Uvicorn、Hypercorn)来提供您的项目的入口点。ASGI(Asynchronous Server Gateway Interface)是异步 Python Web 应用程序的标准,也支持 WSGI 应用程序。

myproject/settings.py 文件至关重要。最初,您可能需要配置:

**`DEBUG`**:`DEBUG = True`

启用调试模式,提供详细的错误页面。至关重要的一点是,永远不要在生产环境中将 DEBUG 设置为 True! 它会暴露敏感配置详情。部署前请将其设置为 False。当 DEBUG 为 False 时,您还需要配置 ALLOWED_HOSTS。

DATABASES:配置数据库连接。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3', # BASE_DIR 在文件顶部定义
}
}

默认使用 SQLite,它将数据库存储在单个文件中(项目根目录下的 db.sqlite3)。这对于开发来说很方便。对于生产环境,通常会使用更健壮的数据库,如 PostgreSQL 或 MySQL。您需要更改 ENGINE(例如,django.db.backends.postgresql、django.db.backends.mysql)并相应地提供 NAME、USER、PASSWORD、HOST 和 PORT。您还需要安装相应的数据库驱动程序(例如,PostgreSQL 的 psycopg2-binary,MySQL 的 mysqlclient)。

其他重要设置包括:

  • INSTALLED_APPS:列出此项目中所有活动的 Django 应用程序。
  • MIDDLEWARE:请求/响应周期中处理的中间件组件列表。
  • TEMPLATES:模板引擎的配置。
  • STATIC_URL、STATIC_ROOT、STATICFILES_DIRS:用于管理静态文件(CSS、JS、图像)的设置。
  • MEDIA_URL、MEDIA_ROOT:用于管理用户上传文件(媒体文件)的设置。
  • SECRET_KEY:用于加密签名的唯一密钥。在生产环境中请务必保密!
  • TIME_ZONE、LANGUAGE_CODE、USE_I18N、USE_L10N、USE_TZ:国际化和时区设置。

在终端中导航到外部 myproject 目录(包含 manage.py 的那个目录),并运行开发服务器:

$ python manage.py runserver

您应该看到类似于以下的输出(版本号和日期可能不同):

Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
September 11, 2023 - 16:30:00
Django version 4.2.5, using settings 'myproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-C.

打开您的 Web 浏览器并访问 http://127.0.0.1:8000/。您应该能看到默认的 Django 欢迎页面,确认您的项目已正确设置。