Django 是一个高级 Web 框架,用于快速开发安全且易于维护的网站。它是一个免费且开源的框架,使用 Python 编写。Django 还因性能、安全性、可扩展性、便携性和可维护性等其他特性而广受欢迎。
本指南将演示如何安装 Django 并设置一个简单的 Web 应用,在 Ubuntu 20.04.
Ubuntu 上的 Django
在系统上安装 Django 有多种方法。每种方法都适用于不同的目标。
- 全局安装:Django 可以直接从 Ubuntu 官方软件包仓库中获取。我们可以直接使用 APT 包管理器进行安装。虽然这种安装方法很简单,但与其他方法相比,它的灵活性较差。此外,它可能不包含该框架的最新版本。
- 使用
pip在虚拟环境中安装:使用类似于venv和virtualenv的工具,我们可以建立一个虚拟环境并在其中安装 Django。这种方法的好处是,它不会影响更大的系统。它还允许针对每个项目进行自定义和包管理。这是使用 Django 最实用且最推荐的方法。 - 安装 Django 开发版本:Django 也可以在 GitHub 上获取。最新的开发版本将包含最新的功能/修复。然而,它的代价是可能存在性能和稳定性问题。
本指南要求您拥有一个配置妥当的 Ubuntu 服务器。如果您还没有 Ubuntu 服务器,可以参考我们的指南 如何设置您自己的 Ubuntu 服务器.
在 Ubuntu 上安装 Django
1. 使用包管理器进行全局安装
Django 可以直接从官方软件包仓库中获取。安装过程非常简单。首先,更新 APT 软件包索引:
|
1 |
$ sudo apt update |
接下来,检查已安装的 Python 版本。默认情况下,Ubuntu 20.04 附带 Python 3.8:
|
1 |
$ python3 -V |
现在,我们准备好安装 Django 了:
|
1 |
$ sudo apt install python3-django |
我们可以验证安装是否成功。运行以下命令来检查 Django 版本:
|
1 |
$ django-admin --version |
这验证了 Django 已成功安装。请注意,该 Django 版本不是最新的稳定版本。在撰写本文时,可用的最新 Django 版本是 v3.2.5 (LTS 版本).
2. 使用 pip 安装 Django(在虚拟环境中)
这是推荐的 Django 安装方式,因为它具有最大的灵活性。我们将使用 venv 模块生成虚拟环境,该模块是 Python 3 标准库的一部分。它允许您创建 虚拟 Python 环境并安装 Python 包,而不会对系统其他地方造成更改。您可以拥有许多具有独特配置的虚拟环境。
让我们开始吧。首先,我们需要 Python 的 pip 和 venv 模块:
|
1 2 |
$ sudo apt update $ sudo apt install python3-pip python3-venv |
模块已成功安装。现在,我们将为虚拟环境创建一个专用目录:
|
1 |
$ mkdir -pv ~/sample_project |
接下来,将当前工作目录切换到新目录:
|
1 |
$ cd ~/sample_project |
现在,我们可以让 venv 在该目录中建立一个虚拟环境。至于环境名称,它应该具有描述性:
|
1 |
$ python3 -m venv sample_project_env |
The venv 模块将创建 Python 和 pip 的副本,并将其放入项目目录中一个隔离的目录结构中。它将包含一个以所选名称命名的目录,其中包含安装所有包的文件层级结构。
要安装其他包,我们需要激活该环境:
|
1 |
$ source sample_project_env/bin/activate |
Shell 提示符应该会变成类似这样:
在虚拟环境中,我们现在可以安装 Django:
|
1 |
$ pip install django |
验证安装是否成功:
|
1 |
$ django-admin --version |
要退出虚拟环境,请运行以下命令:
|
1 |
$ deactivate |
3. 安装 Django 开发版本
Django 开发版本可以直接在 GitHub 上获取。我们将使用 git 在虚拟环境中克隆并部署它。
首先,确保我们已经安装了必要的工具。以下命令将安装 venv 和 pip(Python 模块)以及 git:
|
1 |
$ sudo apt update && sudo apt install python3-pip python3-venv git |
接下来,克隆 Django 仓库。它将包含所有最新功能和错误修复(以牺牲稳定性为代价)。我们将把它克隆到一个目录 ~/django-dev:
|
1 |
$ git clone git://github.com/django/django ~/django-dev |
将当前目录切换到克隆的仓库:
|
1 |
$ cd ~/django-dev |
之后,使用 Python 的 venv 模块建立虚拟环境:
|
1 |
$ python3 -m venv sample_project_env |
然后,激活虚拟环境:
|
1 |
$ source sample_project_env/bin/activate |
现在,我们可以安装从 GitHub 克隆的 Django。这里,标志 -e 指的是“可编辑”模式,允许从版本控制进行安装:
|
1 |
$ pip install -e ~/django-dev |
最后,验证安装:
|
1 |
$ django-admin --version |
Django 示例项目
到目前为止,我们已经演示了如何在系统上安装 Django。现在,是时候让 Django 付诸行动了。在本节中,我们将演示如何创建一个 Django 示例项目。该示例项目将在虚拟环境中创建。
为示例项目创建一个目录:
|
1 |
$ mkdir -pv ~/django-test |
将当前目录切换到项目目录:
|
1 |
$ cd ~/django-test |
然后,使用 venv 模块建立 Python 虚拟环境:
|
1 |
$ python3 -m venv dummy_env |
虚拟环境已准备就绪。激活该环境:
|
1 |
$ source dummy_env/bin/activate |
我们可以在该环境中安装 Django:
|
1 |
$ pip install django |
我们可以使用 django-admin 来构建项目基础。在这里,示例项目将被命名为 sampleproject。该项目将在环境目录下拥有一个包含所有必要文件的目录。
manage.py:一个管理各种 Django 特定任务的管理脚本。示例项目:一个以项目名称命名的目录,其中包含实际的项目代码。
然而,我们不希望有太多嵌套目录的蛛网结构。因此,告诉 Django 将文件和目录放在当前目录中:
|
1 |
$ django-admin startproject sampleproject . |
下一步是迁移数据库。默认情况下, Django 使用 SQLite. 迁移 将对 Django 模型所做的任何更改应用到数据库模式中。运行以下命令来迁移数据库:
|
1 |
$ python manage.py migrate |
最后,我们将建立一个管理员用户来使用 Django 管理界面。运行以下命令:
|
1 |
$ python manage.py createsuperuser |
它将要求输入该用户的用户名、电子邮件地址和密码。
Django 设置中的 ALLOWED_HOSTS
要测试应用程序,我们需要修改 Django 设置中的某个指令。在文本编辑器中打开 settings.py 文件:
|
1 |
$ nano ~/django-test/sampleproject/settings.py |
我们感兴趣的指令是 ALLOWED_HOSTS。它描述了可以连接到 Django 实例的地址或域名列表。任何来自不在列表中的主机的传入主机请求都将引发异常。Django 需要此设置来防止某些类别的安全漏洞。
在方括号内,列出与 Django 服务器关联的 IP 地址或域名。每个项目都将列在引号中,并用逗号 (,) 分隔。该指令的结构如下所示:
|
1 |
$ ALLOWED_HOSTS = ['<server_ip_or_domain>', '<server2_ip_or_doman>'] |
保存列表并关闭编辑器。
测试服务器
我们现在可以启动 Django 部署服务器了。它将呈现一个全新的 Django 项目。请注意,它仅用于开发目的。对于完整的部署,请遵循 官方 Django 部署指南.
在访问开发服务器之前,请确保防火墙允许访问端口 8000。如果您遵循 Ubuntu 服务器设置 指南,然后让 UFW 打开端口 8000 以进行通信:
|
1 |
$ sudo ufw allow 8000 |
UFW 是所有主流 Linux 发行版上都可用的常用防火墙。这里有一份指南 解释了 UFW 的各种基础知识。开发服务器现在已准备好运行。启动服务器:
|
1 |
$ python manage.py runserver <server_ip>:8000 |
接下来,在浏览器中访问服务器 IP 地址的端口 8000。它将跳转到 Django 欢迎页面:
|
1 |
$ http://<server_ip>:8000 |
要访问 Django 管理面板,请在 URL 末尾追加 /admin/ :
|
1 |
$ http://<server_ip>:8000/admin/ |
输入管理员用户名和密码以访问管理区域:
您可以通过在终端中按 CTRL-C 来停止服务器。
总结
Django 项目为设计更完整的网站提供了结构基础。它提供了运行 Web 应用程序所需的主要工具。利用像 Django 这样的 Web 框架可以让您更快地开发项目,并将更多时间花在应用程序的独特方面。
祝您计算愉快!












评论
暂无评论。发表第一条评论吧。