Django学习全纪录:编写你的第一个 Django 应用,Django内置数据库的配置,以及扩展性的数据库介绍和配置

news2024/11/27 8:28:17

天下古今之庸人,皆以一惰字致败;天下古今之人才,皆以一傲字致败。——[清]曾国藩

导言

大家好,在上一篇文章里,我们一起学习了Django的视图以及路由,并且对Django的应用有了初步的认识,掌握了视图和路由的基本规则,学会了Django的应用如何创建,总之,收获满满。

这篇文章,我们接着对其进行深入一点的学习,总所周知,我们的项目离不开数据库的支持。如果不懂数据库的相关知识,学习就会无法下手,数据库就成为了绕不过去的一个坎。然而,Django的强大之处之一就是,它使用Python内置的数据库,让不懂数据库的人也可以通过一些命令进行操作。不过,在我们开发之前,最好还是去学习一些数据库的基本知识吧!例如MySQL或者是oracle。

学习目标

  • Django数据库的配置(了解一下内置数据库,使用MySQL进行实践)
  • Django数据库的迁移操作

Django数据库的配置

1、请打开 TestSystem/settings.py 。这是个包含了 Django 项目设置的 Python 模块。

Python内置数据库:SQLite

在settings文件里,这个配置文件使用 SQLite 作为默认数据库。无需我们进行任何配置操作。
说起配置,还记得在settings中的INSTALLED_APPS吗?这里包括了会在你项目中启用的所有 Django 应用。应用能在多个项目中使用,你也可以打包并且发布应用,让别人使用它们。

  • django.contrib.admin – 管理员站点。
  • django.contrib.auth – 认证授权系统。
  • django.contrib.contenttypes – 内容类型框架。
  • django.contrib.sessions – 会话框架。
  • django.contrib.messages – 消息框架。
  • django.contrib.staticfiles – 管理静态文件的框架

这里我们提一下这个设置项,毕竟挺重要的。这些应用被默认启用是为了给常规项目提供方便。
当然,这些默认被激活的应用,如果你觉得不需要,完全可以删除或者注释掉!
如果使用内置的数据库,那么Django早已帮助我们默认填写了配置项,如下图:
默认配置数据库

开始使用拓展数据库:MySQL

当我们开始一个真正的项目时,可能更倾向使用一个更具扩展性的数据库,例如MySQL,避免中途切换数据库这个令人头疼的问题。
所以,在这里我们使用MySQL进行实践,如果你还不懂,那么先去了解一下吧!这里暂时不做讲解,我默认你们都已经懂得MySQL啦!

做一些准备工作

1、我们第一步工作,首先要开启我们的MySQL服务,此处不做讲解哦。
2、打开数据库可视化软件或者命令行都可以,当然我是推荐可视化软件的,我用的是Navicat Premium 12。当然如果你感觉技术高超,使用命令行完全是可以的,但是没必要,效率不是很高对于新手来讲。
3、连接数据库(本地或云端) ,我这里是本地。
4、创建一个用于Django项目的数据库。

配置数据库设置项

现在,回到pycharm,打开settings.py,找到【DATABASES】设置项,我们现在需要配置一些有关数据库的东西。

ENGINE:可选值有 ‘django.db.backends.sqlite3’,‘django.db.backends.postgresql’,‘django.db.backends.mysql’,或 ‘django.db.backends.oracle’。
在这里插入图片描述

#配置项
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'polls',
        "USER": "root",
        "PASSWORD": "root",
        "HOST": "127.0.0.1",
        "PORT": "3306",
    }
}

注意:我们需要安装一个包:mysqlclient,如果提示【 MySQL 8 or later is required (found 5.7.26)】就说明我们需要重新安装对应版本的数据库了哈。

#在终端中安装
pip install mysqlclient

Django数据库的迁移操作

完成以上的工作以后,我们需要在终端执行最后一条命令,完成数据库的迁移。

py manage.py migrate

执行后,可能会出现下面几种异常:
异常1
异常2
解决方案:对于数据库的版本不匹配,更换数据库服务即可,重新开启对应数据库服务以及创建数据库。
对于,缺少包,根据提示,使用pip install 安装对应的包即可。

执行成功后,终端以及数据库可视化软件界面如下:
在这里插入图片描述
在这里插入图片描述
这个 migrate 命令查看 INSTALLED_APPS 配置,并根据 TestSystem/settings.py 文件中的数据库配置和随应用提供的数据库迁移文件,创建任何必要的数据库表。

拓展知识

写到这里,这篇文章其实已经接近尾声。难说再见,这里给大家在分享一点知识。
如果你感兴趣的话,并且已经将mysql配置完成,包括环境变量。那么,可以在终端输入mysql进入数据库的命令行,使用以下命令完成数据库的另一种方式的查看

//更改数据库
use polls
//查看当前的所有数据表
SHOW TABLES;

如下图所示:
在这里插入图片描述

总结

行文至此,这篇文章又要和伙伴们说再见了。在这篇文章里,我们一起研究了Django的数据库以及使用拓展性的数据库的基本操作。下一篇文章,我们将开启一个新课题-模型。
感谢你的阅读和指导,下一篇文章,再见!

原创不易,仅供个人学习研究。

最美的风景是无法用相机记录的,它只该在当时被眼睛全神凝视,再在日后的想象中不受牵绊地重演。——沈诞琦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1448742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DS:二叉树的链式结构及实现

创作不易,友友们给个三连吧!! 一、前言 前期我们解释过二叉树的顺序结构(堆)为什么比较适用于完全二叉树,因为如果用数组来实现非完全二叉树,那么数组的中间部分就可能会存在大量的空间浪费。 …

JVM(3)高级篇

1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址:https://www.graalvm.org/ 官方标语:Build faster, smaller, leaner applications。 更低的CPU、内…

vivim复习

vi/vim常用命令 vi&vim常用命令 set nu 显示行号 gg 跳转到文件开头 / 向后搜索 ? 向前搜索 n 查找下一处N 查找上一处 | 光标所在行行首L 屏幕所显示的底行{ 段首} 段尾- 前一行行首 后一行行首 ( 句首 ) 下一句首 $ 行末 M 屏…

Javaweb基础-tomcat,servlet

一.配置文件基础: properties配置文件: 由键值对组成 键和值之间的符号是等号 每一行都必须顶格写,前面不能有空格之类的其他符号 xml配置文件:(xml语法HTML语法HTML约束)xml约束-DTD / Schema DOM4…

单测的思路

文章目录 单测的定义方法的单测几种生成工具的对比生成步骤 接口的单测场景的单测总结参考 单测的定义 单元测试(Unit Testing)是一种软件开发中的测试方法,它的主要目的是确保软件中的最小可测试单元(通常是函数、方法或类&…

今日arXiv最热NLP大模型论文:清华提出LongAlign,打破长上下文对齐瓶颈,数据、训练策略、评估基准一网打尽

随着LLMs的发展,其支持的上下文长度越来越长。仅一年时间,GPT-4就从一开始的4K、8K拓展到了128k。 128k什么概念?相当于一本300页厚的书。这是当初只支持512个tokens的BERT时代不敢想象的事情。 随着上下文窗口长度的增加,可以提…

【STM32 CubeMX】GPIO的工作模式

文章目录 前言一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 总结 前言 在嵌入式系统开发中,对于STM32微控制器的GPIO(General Purpose Input/Output)引脚的配置和使用是至关重要的。GPIO引脚可以通…

MySQL 基础知识(六)之数据查询(一)

目录 1 基本查询 1.1 查询相关列 (select * / 列名) 1.2 别名 (as) 1.3 去重 (distinct) 1.4 对列中的数据进行运算 (、-、*、/) 2 条件查询 (where) 2.1 等值查询 () 2.2 非等值查询 (>、<、>、<、!、><) 2.3 逻辑判断 (and、or、not) 2.4 区间判…

累加器 - 分布式共享写变量

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 概念注意&#xff1a;应用 概念 因为RDD是可分区的&#xff0c;每个分区在不同的节点上运行&#xff0c;如果想要对某个值进行全局累加&#xff0c;就需要将每个task中的值取到然后进行累…

【Linux笔记】进程间通信之管道

一、匿名管道 我们在之前学习进程的时候就知道了一个概念&#xff0c;就是进程间是互相独立的&#xff0c;所以就算是两个进程是父子关系&#xff0c;其中一个进程退出了也不会影响另一个进程。 也因为进程间是互相独立的&#xff0c;所以两个进程间就不能直接的传递信息或者…

C++ 特殊类的实现

一、请设计一个类&#xff0c;不能被拷贝 拷贝只会放生在两个场景中&#xff1a;拷贝构造函数以及赋值运算符重载&#xff0c;因此想要让一个类禁止拷贝&#xff0c;只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 在C98中&#xff1a;将拷贝构造函数与赋值运算符重载…

【Java记】数据类型与变量

一、数据类型 在Java中数据类型主要分为两类&#xff1a;基本数据类型和引用数据类型。基本数据类型有四类八种&#xff1a; 四类&#xff1a;整型、浮点型、字符型以及布尔型八种&#xff1a; 数据类型 关键字 内存占用 范围 字节型 byte 1 字节 -128~ 127 短整型 …

【C语言】数据结构#实现堆

目录 &#xff08;一&#xff09;堆 &#xff08;1&#xff09;堆区与数据结构的堆 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09;功能实现 &#xff08;1&#xff09;堆的初始化 &#xff08;2&#xff09;堆的销毁 &#xff08;3&#xff09;插入数据 …

Vue3+Vite+TS+Pinia+ElementPlus+Router+Axios创建项目

目录 初始项目组成1. 创建项目1.1 下载项目依赖1.2 项目自动启动1.3 src 别名设置vite.config.ts配置文件tsconfig.json配置若新创项目ts提示1.4 运行测试2. 清除默认样式2.1 样式清除代码下载2.2 src下创建公共样式文件夹`style`2.3 main.js中引入样式2.4 安装`sass`解析插件2…

SpringCloud之Eureka注册中心和负载均衡

SpringCloud之Eureka注册中心和负载均衡 微服务技术栈认识微服务单体架构分布式架构微服务 微服务拆分及远程调用微服务拆分注意事项 Eureka注册中心提供者与消费者原理分析服务调用出现的问题Eureka的作用 使用流程1、搭建EurekaServer2、注册user-service3、在order-service完…

代码随想录算法训练营第三十一天 |基础知识,455.分发饼干,376.摆动序列,53.最大子序和(已补充)

基础知识&#xff1a; 题目分类大纲如下&#xff1a; #算法公开课 《代码随想录》算法视频公开课(opens new window)&#xff1a;贪心算法理论基础&#xff01;(opens new window),相信结合视频再看本篇题解&#xff0c;更有助于大家对本题的理解。 #什么是贪心 贪心的本质…

《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)

文章目录 4.1 解析交易输入和输出4.1.1 基础知识4.1.2 重点案例&#xff1a;追踪比特币交易4.1.3 拓展案例 1&#xff1a;以太坊交易的输入输出解析拓展案例1&#xff1a;以太坊交易的输入输出解析步骤1: 连接到以太坊网络步骤2: 获取交易数据步骤3: 解析交易输入结论 4.1.4 拓…

PyQt Python 使用 VTK ITK 进行分割 三维重建 医学图像可视化系统 流程

效果&#xff1a; 重建流程&#xff1a; 1. 输入 可以读取DICOM &#xff0c;nii nrrd 等数据 设置读取器以加载 DICOM 图像系列。 使用 itk::GDCMImageIO 作为 DICOM 图像的输入输出接口。 使用 itk::GDCMSeriesFileNames 获取指定路径下的所有 DICOM 文件名。 使…

Zabbix图形中文乱码问题(显示口口)解决办法

一 切换到zabbix安装目录assets/fonts下&#xff0c;下载字体 这里使用是nginxphp作为zabbix-web展示&#xff0c;使用find 命令查找 进入目录下&#xff0c;将原有字体备份&#xff0c;下载msyh字体 wget https://www.xxshell.com/download/sh/zabbix/ttf/msyh.ttf 二 修改配…

AI换脸(视频换脸)讲解-1

AI换脸是一种人工智能技术&#xff0c;它可以将一个人的面部表情和特征应用到另一个人的脸部上&#xff0c;以创建逼真的视频和图像。 首先&#xff0c;AI换脸技术需要大量的训练数据。这些数据通常是由多个人以不同的表情、姿态、光照条件下的照片或视频组成。通过使用人工智…