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

如何创建一个 Django 应用并连接到数据库

简介

Django 是一个用 Python 编写的免费开源的 Web 框架。这个工具支持可扩展性、可重用性和快速开发。

在本教程中,您将学习如何为一个博客网站建立与 MySQL 数据库的初始基础。这将涉及使用 django-admin 创建博客 Web 应用程序的骨架结构,创建 MySQL 数据库,并将 Web 应用程序连接到数据库。

Django 将为您提供一个开发环境,用于开发博客 Web 应用程序,但在将博客发布到互联网之前,您需要采取更多步骤。

先决条件

要按照本教程操作,您需要:

  • 一个安装了 Ubuntu 22.04 服务器,具有非 root sudo 权限的用户和防火墙。请按照我们的 Ubuntu 22.04 初始服务器设置指南进行设置。
  • 安装 MySQL 以用作数据库。您可以按照我们的教程《在 Ubuntu 22.04 上安装 MySQL》进行设置。
  • 设置 Python 环境。有关此操作,请参阅我们的教程《在 Ubuntu 22.04 上安装 Python 3 并设置编程环境》。

一旦所有内容都安装并设置好,您就可以继续进行第一步。

步骤 1 — 创建数据库

Django 支持多种流行的数据库管理系统,但本指南侧重于将 Django 连接到 MySQL 数据库。为此,您需要在 MySQL 实例上创建一个数据库,以及一个 Django 可以用来连接到数据库的 MySQL 用户配置文件。

要设置这一点,请使用以下命令连接到 MySQL 数据库,作为 root MySQL 用户:

sudo mysql

当提示符更改为以下内容时,您就知道已经进入了 MySQL 服务器:

使用以下命令检查当前数据库:

SHOW DATABASES;

假设您尚未创建任何数据库,您的输出将类似于以下内容:

+--------------------+
| Database       	|
+--------------------+
| information_schema |
| mysql         	|
| performance_schema |
| sys            	|
+--------------------+
4 rows in set (0.00 sec)

默认情况下,您将已经创建了 4 个数据库:information_schemaMySQLperformance_schemasys。您不需要操作这些数据库,因为它们包含了对 MySQL 服务器本身重要的信息。

而是,创建将保存博客数据的初始数据库。

要在 MySQL 中创建数据库,请运行以下命令,为您的数据库使用一个有意义的名称:

CREATE DATABASE blog_data;

成功创建数据库后,您的输出将如下所示:

Query OK, 1 row affected (0.00 sec)

验证数据库现在是否列在可用数据库中:

SHOW DATABASES;

blog_data 数据库现在应该列在输出中包含的数据库中:

+--------------------+
| Database       	|
+--------------------+
| information_schema |
| blog_data      	|
| mysql             	|
| performance_schema |
| sys            	|
+--------------------+
5 rows in set (0.00 sec)

接下来,创建一个单独的 MySQL 用户帐户,Django 将用于操作新数据库。创建特定的数据库和帐户可以从管理和安全的角度支持您。在本指南中,我们将使用名称 djangouser。您可以使用任何您喜欢的名称,但选择一个有描述性的名称可能会有所帮助。

您将创建此帐户,设置密码,并授予其对您创建的数据库的访问权限。首先,通过输入以下命令创建用户并设置其密码。请记住,通过在此示例中替换 password 来为您的数据库选择一个强密码:

CREATE USER 'djangouser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

让数据库知道 djangouser 应该完全访问您设置的数据库:

GRANT ALL ON blog_data.* TO 'djangouser'@'localhost';

现在您有了一个专门为 Django 创建的数据库和用户帐户。刷新权限,以便当前的 MySQL 实例知道您所做的最近更改:

FLUSH PRIVILEGES;

完成后,您可以通过输入 EXIT; 或按 CTRL + D 来退出 MySQL 服务器。

步骤 2 — 创建 MySQL 选项文件

与其在 Django 配置文件中指定 MySQL 连接详细信息,不如将它们存储在一个选项文件中。许多 MySQL 程序可以读取选项文件,也称为配置文件,用于存储启动选项或连接详细信息等信息。这样做很方便,因为您只需在一个地方存储数据库登录凭据。

使用您喜欢的文本编辑器打开 my.cnf 配置文件以更新您的 MySQL 凭据。这里我们将使用 nano

sudo nano /etc/mysql/my.cnf

添加以下行并包含您的相关信息:

…[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8

请注意,utf8 被设置为默认编码。这是在 MySQL 中对 Unicode 数据进行编码的常见方式。当您确定您的详细信息是正确的时,保存并关闭文件。如果您使用 nano 编辑文件,您可以按 CTRL + O 保存文件,然后按 CTRL + X 关闭编辑器。

编辑文件后,重新启动 MySQL 以使更改生效:

sudo systemctl daemon-reload
sudo systemctl restart mysql

请注意,重新启动 MySQL 需要几秒钟的时间,请耐心等待。

相关文章:

如何创建一个 Django 应用并连接到数据库

简介 Django 是一个用 Python 编写的免费开源的 Web 框架。这个工具支持可扩展性、可重用性和快速开发。 在本教程中,您将学习如何为一个博客网站建立与 MySQL 数据库的初始基础。这将涉及使用 django-admin 创建博客 Web 应用程序的骨架结构,创建 MyS…...

【算法刷题day44】Leetcode:518. 零钱兑换 II、377. 组合总和 Ⅳ

文章目录 Leetcode 518. 零钱兑换 II解题思路代码总结 Leetcode 377. 组合总和 Ⅳ解题思路代码总结 草稿图网站 java的Deque Leetcode 518. 零钱兑换 II 题目:518. 零钱兑换 II 解析:代码随想录解析 解题思路 先遍历物品,再遍历背包。 代码…...

『51单片机』AT24C02[IIC总线]

存储器的介绍 ⒈ROM的功能⇢ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变,就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理。 注→在后面发展的ROM是可以可写可…...

Jenkins与Rancher的配合使用

Jenkins和Rancher是两个常用的DevOps工具,可以很好地配合使用来实现持续集成和持续部署。 Jenkins是一个开源的自动化构建工具,可以实现自动化的代码构建、测试和部署等一系列操作。可以通过Jenkins来触发构建任务,例如从代码仓库中拉取最新的…...

GIS入门,常用的多边形平滑曲线算法介绍和JavaScript的多边形平滑曲线算法库chaikin-smooth的实现原理和使用

前言 本章介绍一下常用的多边形平滑曲线算法及其使用案例。 多边形平滑算法通常用于图形处理或计算机图形学中,以使线条或曲线在连接处平滑过渡,而不出现明显的棱角或断裂。多边形平滑算法有多种实现方法,其中一些常见的有下面几种: 贝塞尔曲线插值(Bezier Curve Interpo…...

气膜体育馆内部的采光效果如何?—轻空间

气膜体育馆内部的采光效果如何?这是许多人对这种创新建筑的一个关键关注点。 首先,气膜体育馆的采光性非常好。阳光透过屋顶时以漫射光的方式进入室内,这种透射方式使得室内的光线柔和而均匀。从内部观察,整个屋顶就像一个连续的明…...

矩阵的对称正定性判决(复习)

文章目录 本科学的数学知识忘的太快了 如何判断一个实矩阵是否是对称正定 在线性代数中,一个实对称矩阵是否为正定可以通过以下方法判断: 对称性: 首先,确认矩阵是否对称,即矩阵的转置是否等于其本身。 特征值检查&…...

网络安全之DHCP详解

DHCP:Dynamic Host Configration Protocol 动态主机配置协议 某一协议的数据是基于UDP封装的,当它想确保自己的可靠性时,这个协议要么选确认重传机制,要么选周期性传输。 DHCP是确认重传,【UDP|DHCP】,当DHCP分配完地…...

【Proteus】LED呼吸灯 直流电机调速

1.LED呼吸灯 #include <REGX51.H> sbit LEDP2^0; void delay(unsigned int t) {while(t--); } void main() {unsigned char time,i;while(1){for(time0;time<100;time){for(i0;i<20;i){LED0;delay(time);LED1;delay(100-time);}}for(time100;time>0;time--){fo…...

今天遇到一个GPT解决不了的问题

问题描述 你好&#xff0c;postman的一个post请求&#xff0c;编辑器里面放了一个很长的json数据&#xff0c;报Tokenization is skipped for long lines for performance reasons. This can be configured via editor.maxTokenizationLineLength.&#xff0c;但是同样的数据&a…...

优化SQL的方法

来自组内分享&#xff0c;包含了比较常使用到的八点&#xff1a; 避免使用select * union all代替union 小表驱动大表 批量操作 善用limit 高效的分页 用连接查询代替子查询 控制索引数量 一、避免使用select * 消耗数据库资源 消耗更多的数据库服务器内存、CPU等资源。 消…...

库存管理系统开源啦

软件介绍 ModernWMS是一个针对小型物流仓储供应链流程的开源库存管理系统。该系统的开发初衷是为了满足中小型企业在有限IT预算下对仓储管理的需求。通过总结多年ERP系统研发经验&#xff0c;项目团队开发了这套适用于中小型企业的系统&#xff0c;以帮助那些有特定需求的用户。…...

【java】接口

什么是接口 接口当中存在的是对方法的定义&#xff0c;而不是对方法的具体实现。 为什么不实现这个方法呢&#xff1f; 继承的本质是代码的复用。当一个父类会经常被继承&#xff0c;并且子类都要自己实现方法时&#xff0c;父类中的方法就会显得累赘&#xff0c;并且占用了…...

Java中的类型转换

一、类型转换 对类型转换来说分为向上类型转换和向下类型转换&#xff1a; 向上类型转换是自动完成的&#xff0c;一般是小类型向大类型转换。在引用类型中是子类型向父类型转换。向下类型转换是强制完成的&#xff0c;一般是大类型向小类型转换。在引用类型中是父类型向子类…...

定义范围对PFMEA分析的重要性——SunFMEA软件

在进行PFMEA分析时&#xff0c;定义范围是一个至关重要的步骤。这是因为&#xff0c;通过明确分析的范围&#xff0c;可以确保团队关注到最关键、最可能影响产品质量的过程&#xff0c;从而更有效地识别和解决潜在问题。今天SunFMEA软件和大家一起讨论定义范围对PFMEA操作的重要…...

json返回工具类|世界协调时间(UTC)

一、问题 世界协调时间&#xff08;UTC&#xff09;是一个标准的时间参考&#xff0c;通常被用于跨越不同时区的时间标准。要将 UTC 时间转换为中国时间&#xff08;中国标准时间&#xff09;&#xff0c;你需要将时间加上8个小时&#xff0c;因为中国位于 UTC8 时区。 初中知…...

MySQL·内置函数

目录 函数 日期函数 案例1&#xff1a;创建一张表&#xff0c;记录生日 案例2&#xff1a;创建一个留言表 案例3&#xff1a;请查询在2分钟内发布的帖子 字符串函数 案例1&#xff1a; 获取emp表的ename列的字符集 案例2&#xff1a;要求显示exam_result表中的信息&am…...

vue根据文字动态判断溢出...鼠标悬停显示el-tooltip展示

使用自定义el- tooltip 组件 定义 Tooltip是一种小型弹出框,它显示有关特定页面元素的信息,例如按钮、链接或图标。Tooltip通常以半透明的气泡形式呈现,并出现在页面元素的旁边或下方。 它可以改善用户体验,使用户更容易理解页面元素的功能和意图。用户可以通过将鼠标悬停…...

使用Tkinter实现数据预测工具的GUI界面展示

如果构建好预测模型后&#xff0c;想将预测模型通过一个交互式的页面显示&#xff0c;可以通过下边两种方式实现。 本文中代码有详细解析注释&#xff0c;便不再如往期一样分开讲解了&#xff0c;有需要的朋友可以直接拿去使用&#xff0c;代码可以直接运行&#xff0c;把预测…...

机器学习笔记-22

终章 至此吴恩达老师的机器学习课程已经完成啦&#xff0c;总结一下&#xff1a; 1.监督学习的算法&#xff1a;线性回归、逻辑回归、神经网络和向量机 2.无监督学习的算法&#xff1a;K-Means、PCA、异常检测 3.推荐系统、大规模数据处理、正则化、如何评估算法 4.上限分析、…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...