在本教程中,我们将了解 Django 项目和 Django 应用程序之间的区别,以及如何启动一个新的 Django 项目。
Django 是构建 Web 应用程序的首选 Python/ target=_blank class=infotextkey>Python Web 框架。它是一个成熟、功能齐全、灵活且开源的框架,可让您构建从简单的 CRUD 应用程序到更复杂的多应用程序项目(如照片共享应用程序)的任何内容。
您不需要先前的知识来设置 Django 项目。但是 Django 是一个 Python 框架,所以要使用它,你应该有使用 Python 的坚实基础。
在开始之前,请确保您已安装了 Python 3.6 或更高版本的终端或命令提示符。
大多数 macOS 和 linux 系统默认安装 Python 3,但如果您使用的是 windows,则需要下载并安装Python。您可以在Python 官方网站上遵循本指南。
您可以通过打开操作系统的应用程序查找器并搜索Terminal来打开终端,或者在 Windows 上搜索cmd。
设置终端后,就该确认您的 Python 版本了。为此,请键入以下命令:
python --version
Python 3.9.7 # My result
如果您没有得到 Python 3.x 形式的结果,请不要惊慌。有两种选择:
python3 --version
Python 3.9.7 # Again, my result
现在您知道要在终端中运行什么 Python 命令,让我们深入了解 Django 项目。
Django 项目是使 Web 应用程序工作所需的 Python 包。它包含构建站点后端(服务器端开发,用户看不到的内容)所需的一切。Django 项目的正常功能决定了您如何与数据库交互、身份验证、如何检索数据等等。
您也可以将其视为设置的集合,以及名为应用程序的小型 Python 模块。我们稍后会讨论它们,但作为一个预先概念,应用程序是另一组 Python 文件,用于解决应用程序的特定任务。
通过本文,您将了解 Django 项目的复杂结构。但从一开始我就想让你知道,一个 Django 项目可以缩小到一个文件,类似于Flask项目。
Minimal Django项目对此进行了快速演示。这是一个包含 23 行代码的文件,它允许我们带来 Django “Hello, World!” 生活项目:
import sys
from django.conf import settings
from django.urls import path
from django.core.management import execute_from_command_line
from django.http import HttpResponse
settings.configure(
DEBUG=True,
ROOT_URLCONF=sys.modules[__name__],
)
def index(request):
return HttpResponse('<h1>A minimal Django response!</h1>')
urlpatterns = [
path(r'', index),
]
if __name__ == '__main__':
execute_from_command_line(sys.argv)
现在,一个 Django 项目可以走得更远。一个很好的例子是 Instagram,它有数千个 Django 端点,并且仍然使用这个框架来实现关键功能。
如果以下某些命令看起来很复杂,请不要太担心。在您创建了几个项目之后,您就会对它们了如指掌。
首先,你需要知道 Django 是一个外部包。换句话说,它没有内置在 Python 中,因此您需要使用 PIP 安装它。
PIP 是 Python 的包管理器,该工具允许您从Python 包索引(PyPI) 安装 Python 包。
现在,在安装实际的 Python 包之前,您需要创建一个虚拟环境。为您构建的每个 Django 项目创建一个虚拟环境是一个很好的做法,这样您就可以跟踪依赖关系。
也许您在 Django 2.6 项目中的代码可能不适用于 Django 3.0。虚拟环境可让您对所拥有的每个项目都有特定的要求。
您可以使用以下命令创建一个名为(或任何您想要的名称)的虚拟环境:.venv
python -m venv .venv
现在,如果您列出当前目录中的文件,您将看到一个名为 的新文件夹.venv,其中同时包含独立的 Python 二进制文件:
$ ls -lah .venv/
Permissions Size User Date Modified Name
drwxr-xr-x - daniel 10 nov 23:13 .
drwxr-xr-x - daniel 10 nov 23:13 ..
drwxr-xr-x - daniel 10 nov 23:13 bin
drwxr-xr-x - daniel 10 nov 23:13 include
drwxr-xr-x - daniel 10 nov 23:13 lib
lrwxrwxrwx 3 daniel 10 nov 23:13 lib64 -> lib
.rw-r--r-- 69 daniel 10 nov 23:13 pyvenv.cfg
要激活您的虚拟环境,您需要使用以下命令激活它:
source .venv/bin/activate
这仅适用于 bash shell(适用于 macOS 和 Linux)。如果您使用不同的 shell,您可以查看以下激活venv表:
平台 |
贝壳 |
激活虚拟环境的命令 |
POSIX |
bash/zsh |
$ source .venv>/bin/activate |
|
鱼 |
$ source .venv>/bin/activate.fish |
|
csh/tcsh |
$ source .venv>/bin/activate.csh |
|
PowerShell 核心 |
$ .venv/bin/Activate.ps1 |
视窗 |
命令文件 |
C:> .venvScriptsactivate.bat |
|
电源外壳 |
PS C:> .venvScriptsActivate.ps1 |
检查您的 shell 是否已激活的一种方法是在提示符中查找更改。就我而言,我所看到的如下图所示。
现在,安装 Django 包。您可以安装最新版本或特定版本的 Django:
pip install django # Latest version
pip install django==2.2 # Specific version
安装 Django 后,要启动一个新项目,请调用django-admin命令行实用程序并运行:
django-admin startproject <project_name>
值得一提的是,有些名称是为 Django 保留的——django或者django-admin. 如果您遇到错误,请不要担心。只需尝试使用不同的项目名称:
django-admin startproject django
# CommandError: 'django' conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name.
django-admin startproject django-admin
# CommandError: 'django-admin' is not a valid project name. Please make sure the name is a valid identifier.
一种常见的做法是将您的项目命名为config,这有一些好处。首先,它是一个可以在所有项目中保持一致的名称,其次,“项目”文件夹通常只存储与配置相关的文件。您可以在官方Django 论坛上阅读更多内容:
django-admin startproject config
启动 Django 项目后,您将看到一个新文件夹,其中包含您选择的项目名称,其结构类似于:
.
├── config
│ ├── config
│ │ ├── asgi.py
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ └── manage.py
└── .venv
让我们深入分析每个部分:
我知道 Django 的项目结构一开始可能有点复杂,但随着时间的推移,它开始变得有意义。每个文件都有一个目的,开发过程变得非常愉快。
一个常见的快捷方式是省略外部文件夹的创建。这很有用,因为在部署到 Heroku 之类的东西时,您不必修改项目结构:
django-admin startproject <project_name> .
例如,对于您启动的每个 Django 项目,您可以运行以下命令:
django-admin startproject config .
自己尝试每个命令,然后决定哪一个最适合您。
为了完成本节,我们将启动 Django 开发服务器,并检查项目设置是否成功。
转到项目的根文件夹(所在manage.py位置)并使用以下命令启动服务器:
python manage.py runserver
现在,进入你的浏览器,输入localhost:8000/你应该会看到 Django 的默认页面。
正如我之前告诉过的,Django 项目与 Django 应用程序不同。
来自官方文档:“应用程序是做某事的 Web 应用程序”。那是一种特定的功能,例如用户的应用程序、评论应用程序、聊天应用程序。
您的应用程序的功能定位越多越好。
Django 应用程序是自包含的,这意味着它可以在项目之间重用。这就是为什么您可以安装一个外部应用程序,例如Django-allauth并在您的项目中使用它,只需将其添加到INSTALLED_AppS变量中即可。
您将花费大部分时间处理应用程序,因为它们会一一构建您项目的所有功能。
从现在开始,您将使用该manage.py实用程序,因此要创建应用程序,请转到项目的根文件夹并运行以下命令:
python manage.py startapp <app_name>
尝试尽可能具体地使用您的应用名称。如果您想创建一个用于将支付与 PayPal 或 Stripe 集成的应用程序,请将其命名为payments:
python manage.py startapp payments
让我们深入了解 Django 应用程序的结构:
.
├── config
│ ├ ...
├── manage.py
└── payments
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
在您的应用程序中,您可以创建其他文件和文件夹,甚至构建模板,这是 Django 在网页上动态显示数据的方式。
我们在本教程中使用了很多命令,因此这里总结了每个命令的用途。
命令 |
描述 |
python -m venv (name_of_venv) |
创建虚拟环境 |
source (venv)/bin/activate |
激活虚拟环境 |
django-admin startproject (project_name) |
启动一个 Django 项目 |
django-admin startproject (project_name) . |
在同一目录下建立一个项目 |
python manage.py runserver |
运行 Django 服务器 |
python manage.py startapp (app_name) |
创建一个 Django 应用程序 |
Django 是一个完整的网络框架,可让您构建任何类型的应用程序。设置 Django 项目既快速又简单,您可以立即开始处理您的项目。
通过本教程,您学会了: