当前位置: 首页 > news >正文

在 Ubuntu 22.04 上安装 Django Web 框架的方法

简介

Django 是一个功能齐全的 Python Web 框架,用于开发动态网站和应用程序。使用 Django,您可以快速创建 Python Web 应用程序,并依赖框架来完成大部分繁重的工作。

在本指南中,您将在 Ubuntu 22.04 服务器上启动 Django。安装完成后,您将启动一个新项目,作为您网站的基础。

不同的安装方法

根据您的需求和如何配置开发环境,安装 Django 有不同的方法。这些方法各有优势,其中一种方法可能比其他方法更适合您的特定情况。

一些不同的安装方法包括:

  • 从软件包全局安装:官方的 Ubuntu 软件仓库中包含了 Django 软件包,可以使用传统的 apt 软件包管理器进行安装。这种方法简单,但不如其他方法灵活。此外,仓库中包含的版本可能落后于项目官方提供的官方版本。
  • 在虚拟环境中使用 pip 安装:您可以使用 venvvirtualenv 等工具在项目目录中创建一个独立的环境。虚拟环境允许您在项目目录中安装 Django,而不会影响更大的系统,同时还可以进行其他项目定制和包的安装。这通常是使用 Django 的最实用和推荐的方法。
  • 使用 git 安装开发版本:如果您希望安装最新的开发版本而不是稳定版本,可以从 Git 仓库获取代码。这是获取最新功能/修复的必要步骤,并且可以在您的虚拟环境中完成。然而,开发版本不具有与更稳定版本相同的稳定性保证。

先决条件

在开始之前,您应该在 Ubuntu 22.04 服务器上拥有一个具有 sudo 权限的非根用户。要设置这一点,请按照我们的 Ubuntu 22.04 初始服务器设置指南进行操作。

从软件包全局安装

如果您希望使用 Ubuntu 软件仓库安装 Django,则该过程非常简单。

首先,使用 apt 更新本地软件包索引:

sudo apt update

接下来,检查您安装了哪个版本的 Python。22.04 默认安装了 Python 3.10,您可以通过输入以下命令进行验证:

python3 -V

您应该会看到如下输出:

Python 3.10.4

接下来,安装 Django:

sudo apt install python3-django

您可以通过输入以下命令来测试安装是否成功:

django-admin --version
3.2.12

这意味着软件已成功安装。您可能还注意到 Django 的版本不是最新的稳定版本。要了解如何使用该软件,请跳转到了解如何创建示例项目。

在虚拟环境中使用 pip 安装

在系统中安装 Django 最灵活的方式是在虚拟环境中进行。我们将向您展示如何在使用 venv 模块创建的虚拟环境中安装 Django。venv 是 Python 3 标准库的一部分,允许您创建虚拟 Python 环境并安装 Python 包,而不会影响系统的其他部分。因此,您可以在项目基础上选择 Python 包,而不受其他项目需求的影响。

让我们首先刷新本地软件包索引:

sudo apt update

检查您安装了哪个版本的 Python:

python3 -V
Python 3.10.4

接下来,让我们从 Ubuntu 软件仓库安装 pipvenv

sudo apt install python3-pip python3-venv

现在,每当您启动一个新项目时,您都可以为其创建一个虚拟环境。首先创建并进入一个新的项目目录:

mkdir ~/newproject
cd ~/newproject

接下来,在项目目录中使用与您的 Python 版本兼容的 python 命令创建一个虚拟环境。我们将称我们的虚拟环境为 my_env,但您应该为其选择一个描述性的名称:

python3 -m venv my_env

这将在您的项目目录中创建一个独立的 Python 和 pip 版本,安装在隔离的目录结构中。将创建一个以您选择的名称命名的目录,其中将安装您的包的文件层次结构。

要将包安装到隔离环境中,您必须通过输入以下命令来激活它:

source my_env/bin/activate

您的提示符应该会更改以反映您现在在虚拟环境中。它看起来应该类似于 (my_env)username@hostname:~/newproject$

在新环境中,您可以使用 pip 安装 Django。无论您的 Python 版本如何,在虚拟环境中,pip 应该被称为 pip。还要注意,您不需要使用 sudo,因为您是在本地安装:

pip install django

您可以通过输入以下命令来验证安装:

django-admin --version
4.0.4

请注意,您的版本可能与此处显示的版本不同。

要离开虚拟环境,您需要在系统的任何位置发出 deactivate 命令:

deactivate

您的提示符应该会恢复到常规显示。当您希望再次处理项目时,请通过返回到项目目录并激活来重新激活您的虚拟环境:

cd ~/newproject
source my_env/bin/activate

使用 Git 安装开发版本

如果你需要安装 Django 的开发版本,你可以从它的 Git 仓库中下载并安装 Django。让我们在虚拟环境中进行这个操作。

首先,让我们更新本地软件包索引:

sudo apt update

检查你已安装的 Python 版本:

python3 -V
Python 3.10.4

接下来,从官方仓库安装 pipvenv

sudo apt install python3-pip python3-venv

下一步是克隆 Django 仓库。在发布之间,该仓库将具有更新的功能和可能牺牲稳定性的 bug 修复。你可以通过以下命令将仓库克隆到名为 ~/django-dev 的目录中:

git clone git://github.com/django/django ~/django-dev

切换到该目录:

cd ~/django-dev

使用与你已安装的 Python 版本兼容的 python 命令创建一个虚拟环境:

python3 -m venv my_env

激活它:

source my_env/bin/activate

接下来,你可以使用 pip 安装仓库。-e 选项将以 “可编辑” 模式安装,这在从版本控制安装时是必需的:

pip install -e ~/django-dev

你可以通过输入以下命令来验证安装是否成功:

django-admin --version
4.0.4.2

再次说明,你看到的版本可能与此处显示的不匹配。

现在你在虚拟环境中拥有了最新版本的 Django。

创建一个示例项目

安装了 Django 后,你可以开始构建你的项目。我们将介绍如何使用虚拟环境创建一个项目并在开发服务器上测试它。

首先,创建一个用于项目的目录并切换到该目录:

mkdir ~/django-test
cd ~/django-test

接下来,创建你的虚拟环境:

python3 -m venv my_env

激活该环境:

source my_env/bin/activate

安装 Django:

pip install django

要构建你的项目,你可以使用 django-adminstartproject 命令。我们将称我们的项目为 djangoproject,但你可以用其他名称替换它。startproject 将在当前工作目录中创建一个包含以下内容的目录:

  • 一个管理脚本 manage.py,你可以用它来管理各种特定于 Django 的任务。
  • 一个目录(与项目同名),其中包含实际的项目代码。

然而,为了避免有太多嵌套的目录,让我们告诉 Django 将管理脚本和内部目录放在当前目录中(注意末尾的点):

django-admin startproject djangoproject .

要迁移数据库(此示例默认使用 SQLite),让我们使用 manage.pymigrate 命令。迁移将应用你对 Django 模型所做的任何更改到你的数据库模式中。

要迁移数据库,请输入:

python manage.py migrate

你将看到如下输出:

Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying auth.0012_alter_user_first_name_max_length... OKApplying sessions.0001_initial... OK

最后,让我们创建一个管理员用户,这样你就可以使用 Django 管理界面。我们可以使用 createsuperuser 命令来完成这个操作:

python manage.py createsuperuser

系统会提示你输入用户名、电子邮件地址和用户的密码。

修改 Django 设置中的 ALLOWED_HOSTS

为了成功测试你的应用程序,你需要修改 Django 设置中的一个指令。

通过输入以下命令打开设置文件:

nano ~/django-test/djangoproject/settings.py

在文件中找到 ALLOWED_HOSTS 指令。这个指令定义了可以用于连接到 Django 实例的地址或域名列表。如果一个带有 Host 头的请求不在这个列表中,将会引发异常。Django 要求你设置这个值以防止一定类别的安全漏洞。

在方括号中,列出与你的 Django 服务器相关的 IP 地址或域名。每个条目应该用引号括起来,不同的条目之间用逗号分隔。如果你想要针对整个域和任何子域的请求,需要在条目的开头加上一个句点:

ALLOWED_HOSTS = ['your_server_ip_or_domain', 'your_second_ip_or_domain', . . .]

完成后,保存文件并退出编辑器。

测试开发服务器

一旦你有了用户,你可以启动 Django 开发服务器,看看一个全新的 Django 项目是什么样子的。你应该只在开发目的下使用这个服务器。当你准备部署时,一定要仔细遵循 Django 的部署指南。

在尝试开发服务器之前,确保在防火墙中打开了适当的端口。如果你按照初始服务器设置指南并使用 UFW,你可以通过输入以下命令来打开 8000 端口:

sudo ufw allow 8000

启动开发服务器:

python manage.py runserver your_server_ip:8000

在你的网络浏览器中访问服务器的 IP 地址后面加上 :8000

http://your_server_ip:8000

你应该会看到类似下面的内容:

!Django public page

要访问管理界面,将 /admin/ 添加到你的 URL 末尾:

http://your_server_ip:8000/admin/

这将带你到一个登录界面:

!Django admin login

如果你输入刚刚创建的管理员用户名和密码,你将可以访问站点的主要管理部分:

!Django admin page

要了解更多关于使用 Django 管理界面的信息,请参阅 “如何启用和连接 Django 管理界面”。

当你完成查看默认站点后,可以在终端中输入 CTRL-C 来停止开发服务器。

你创建的 Django 项目为设计一个更完整的站点提供了结构基础。查看 Django 文档,了解如何构建你的应用程序和自定义你的站点的更多信息。

结论

现在你应该在你的 Ubuntu 22.04 服务器上安装了 Django,提供了创建强大的 Web 应用程序所需的主要工具。你还应该知道如何启动一个新项目并启动开发服务器。利用像 Django 这样完整的 Web 框架可以帮助加快开发速度,让你只专注于应用程序的独特方面。

相关文章:

在 Ubuntu 22.04 上安装 Django Web 框架的方法

简介 Django 是一个功能齐全的 Python Web 框架,用于开发动态网站和应用程序。使用 Django,您可以快速创建 Python Web 应用程序,并依赖框架来完成大部分繁重的工作。 在本指南中,您将在 Ubuntu 22.04 服务器上启动 Django。安装…...

JVM Java虚拟机入门指南

文章目录 为什么学习JVMJVM的执行流程JVM的组成部分类加载运行时数据区本地方法接口执行引擎 垃圾回收什么样的对象是垃圾呢内存溢出和内存泄漏定位垃圾的方法对象的finalization机制垃圾回收算法分代回收垃圾回收器 JVM调优参数JVM调优工具Java内存泄漏排查思路CPU飙高排查方案…...

【错误文档】This与Here的区别、主系表结构、如何合并两个句子、祈使句结构

目录 This与Here的区别 主系表结构 如何合并两个句子 祈使句结构 原句中文1: “就是这件。” 我的翻译: This is it. 正确翻译: 书上原句: Here it is! 正确解释: 两个翻译都对,只是强调点不同&…...

Java入门之JavaSe(韩顺平p1-p?)

学习背景: 本科搞过一段ACM、研究生搞了一篇B会后,本人在研二要学Java找工作啦~~(宇宙尽头是Java?)爪洼纯小白入门,C只会STL、python只会基础Pytorch、golang参与了一个Web后端项目,可以说项目小…...

TCP的连接和断开详解

目录 1.TCP基础知识 1.1.TCP 头格式 1.2.TCP协议介绍 1.3.UDP协议介绍 1.4.TCP 和 UDP 区别 1.5.TCP 和 UDP 应用场景 1.6.计算机网络相关术语(缩写) 2.TCP 连接建立:三次握手 2.1.TCP 三次握手过程 2.2.三次握手原理 2.3.异常分析…...

armbian ddns

参考https://mp.weixin.qq.com/s/0Uu_nbGH_W6vAYHPH4kHqg Releases jeessy2/ddns-go GitHub mkdir -p /usr/local/ddns-go cd /usr/local/ddns-gowget https://github.com/jeessy2/ddns-go/releases/download/v6.1.1/ddns-go_6.1.1_freebsd_armv7.tar.gztar zxvf ddns-go_…...

MQTT 服务器(emqx)搭建及使用

推荐阅读: MQTT 服务器(emqx)搭建及使用 - 哔哩哔哩 (bilibili.com) 一、EMQX 服务器搭建 1、下载EMQX https://www.emqx.com/zh/try?productbroker 官方中文手册: EMQX Docs 2、安装使用 1、该软件为绿色免安装版本,解压缩后即安装完…...

【flink状态管理(四)】MemoryStateBackend的实现

文章目录 1.基于MemoryStateBackend创建KeyedStateBackend1.1. 状态初始化1.2. 创建状态 2. 基于MemoryStateBackend创建OperatorStateBackend3.基于MemoryStateBackend创建CheckpointStorage 在Flink中,默认的StateBackend实现为MemoryStateBackend,本文…...

前端架构: 脚手架在前端研发流程中的意义

关于脚手架 脚手架又被成为 CLI (command-line interface)基于文本界面,通过中断输入命令执行常见的脚手架:npm, webpack-cli, vue-cli拿 npm 这个脚手架来说 在终端当中输入 npm 命令, 系统就会通过文本方式返回 npm 的使用方法它这种通过命令行执行的…...

Qt网络编程-QTcpServer的封装

简单封装Tcp服务器类&#xff0c;将QTcpServer移入线程 头文件&#xff1a; #ifndef TCPSERVER_H #define TCPSERVER_H#include <QObject>class QTcpSocket; class QTcpServer; class QThread; class TcpServer : public QObject {Q_OBJECT public:explicit TcpServer(…...

【MySQL】_JDBC编程

目录 1. JDBC原理 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert 3.1 创建并初始化一个数据源 3.2 和数据库服务器建立连接 3.3 构造SQL语句 3.4 执行SQL语句 3.5 释放必要的资源 4. JDBC代码的优化 4.1 从控制台输入 4.2 避免SQL注入的SQL语句 5. 编写JDBC代码实现…...

微信小程序编译出现 project.config.json 文件内容错误

问题描述&#xff1a; 更新微信开发工具后&#xff0c;使用微信开发工具编译时出现project.config.json 文件内容错误。 原因&#xff1a;当前使用的微信开发工具非稳定版本。 解决方法&#xff1a; 在 manifest.json中加入以下代码&#xff1a; "mp-weixin" : …...

一周学会Django5 Python Web开发-Django5创建项目(用命令方式)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

DockerUI如何部署结合内网穿透实现公网环境管理本地docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…...

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML&#xff08;Unified modeling language UML&#xff09;统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的&#xff0c;是UML图中最核心的。类图的是用于…...

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架&#xff0c;它无需大量的配置即可运行起来&#xff0c;而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势&#xff0c;可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…...

C++:二叉搜索树模拟实现(KV模型)

C&#xff1a;二叉搜索树模拟实现&#xff08;KV模型&#xff09; 前言模拟实现KV模型1. 节点封装2、前置工作&#xff08;默认构造、拷贝构造、赋值重载、析构函数等&#xff09;2. 数据插入&#xff08;递归和非递归版本&#xff09;3、数据删除&#xff08;递归和非递归版本…...

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…...

十大排序算法之线性时间非比较类排序

线性时间非比较类排序 线性时间的算法执行效率也较高&#xff0c;从时间占用上看&#xff0c;线性时间非比较类排序要优于非线性时间排序&#xff0c;但其空间复杂度较非线性时间排序要大一些。因为线性时间非比较类排序算法会额外申请一定的空间进行分配排序&#xff0c;这也…...

容器基础:Docker 镜像如何保证部署的一致性?

Docker 镜像如何通过固化基础环境、固化依赖性和固化软件启动流程保证部署的一致性 Docker 镜像通过以下三个方面保证部署的一致性&#xff1a; 1. 固化基础环境: 镜像包含构建应用程序所需的所有环境依赖项&#xff0c;例如操作系统、库和工具。构建镜像时&#xff0c;所有…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...