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

基于django图书信息管理系统的搭建(增删改查)

✍django项目搭建教程 ☞      ----------------- 教程    

 本文主要讲解django如何连接数据库MySQL并且可视化展示,实现增删改查功能


目录

一. 创建django应用

二. 数据库配置

三. 查看数据库 

四. 编写代码

4.1视图函数 

4.2 配置URL

4.3创建模板文件 

4.3.1 book_list.html 

4.3.2 book_create.html 

4.3.3 book_update.html 

五. 系统展示 

六. 更多干货


一. 创建django应用

在创建完项目的基础上创建应用,点击文章首部“教程” 0基础也能搭建好项目

python manage.py startapp myapp ---应用名为myapp,可自行修改

创建完应用在项目文件夹下的settings.py中的INSTALLED_APPS 添加一行 "myapp"

项目文件夹下会出现 myapp 文件夹,定义模型 在 myapp/models.py 文件中定义 Book 模型

from django.db import modelsclass Book(models.Model): ------表结构title = models.CharField(max_length=200)author = models.CharField(max_length=100)publication_year = models.IntegerField()def __str__(self):return self.title

二. 数据库配置

 在项目文件夹下的settings.py添加

DATABASES = {# "default": {#     "ENGINE": "django.db.backends.sqlite3",#     "NAME": BASE_DIR / "db.sqlite3",# }'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'date',----数据库名字'USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1','PORT': '3306'}}

 注意:配置完成后,在MySQL执行CREATE DATABASE date 命令创建数据库

 迁移数据库:执行以下命令来创建数据库表

python manage.py makemigrations
python manage.py migrate

和下图一致表明成功了 

 

三. 查看数据库 

 我们可以看到自动生成了如下表,其中最下面的表就是我们所定义的book模型

四. 编写代码

4.1视图函数 

在 myapp/views.py 文件中编写视图函数

from django.shortcuts import render, redirect
from.models import Bookdef book_list(request):books = Book.objects.all()return render(request, 'book_list.html', {'books': books})def book_create(request):if request.method == 'POST':title = request.POST['title']author = request.POST['author']publication_year = request.POST['publication_year']Book.objects.create(title=title, author=author, publication_year=publication_year)return redirect('book_list')return render(request, 'book_create.html')def book_update(request, pk):book = Book.objects.get(pk=pk)if request.method == 'POST':book.title = request.POST['title']book.author = request.POST['author']book.publication_year = request.POST['publication_year']book.save()return redirect('book_list')return render(request, 'book_update.html', {'book': book})def book_delete(request, pk):book = Book.objects.get(pk=pk)book.delete()return redirect('book_list')

4.2 配置URL

在 项目文件夹下的urls.py 文件中配置URL

from django.contrib import admin
from django.urls import path
from myapp.views import book_list, book_create, book_update, book_deleteurlpatterns = [path('admin/', admin.site.urls),path('books/', book_list, name='book_list'),path('books/create/', book_create, name='book_create'),path('', book_update, name='book_update'),path('', book_delete, name='book_delete'),
]

4.3创建模板文件 

 在 myapp/templates 目录下创建以下HTML文件,没有目录则先创建目录

4.3.1 book_list.html 

<!DOCTYPE html>
<html>
<head><title>Book List</title>
</head>
<body><h1>Book List</h1>Create New Book<ul>{% for book in books %}<li>{{ book.title }} - {{ book.author }} ({{ book.publication_year }})UpdateDelete</li>{% endfor %}</ul>
</body>
</html>

4.3.2 book_create.html 

<!DOCTYPE html>
<html>
<head><title>Create Book</title>
</head>
<body><h1>Create New Book</h1><form method="post">{% csrf_token %}<label for="title">Title:</label><br><input type="text" id="title" name="title" required><br><label for="author">Author:</label><br><input type="text" id="author" name="author" required><br><label for="publication_year">Publication Year:</label><br><input type="number" id="publication_year" name="publication_year" required><br><input type="submit" value="Create"></form>
</body>
</html>

4.3.3 book_update.html 

<!DOCTYPE html>
<html>
<head><title>Update Book</title>
</head>
<body><h1>Update Book</h1><form method="post">{% csrf_token %}<label for="title">Title:</label><br><input type="text" id="title" name="title" value="{{ book.title }}" required><br><label for="author">Author:</label><br><input type="text" id="author" name="author" value="{{ book.author }}" required><br><label for="publication_year">Publication Year:</label><br><input type="number" id="publication_year" name="publication_year" value="{{ book.publication_year }}" required><br><input type="submit" value="Update"></form>
</body>
</html>

五. 系统展示 

 

 

六. 更多干货

------------   --  ✈✈✈
1.如果我的博客对你有帮助或你喜欢我的博客内容,请 “👍点赞” “✍️评论” “收藏” 一键三连哦!

2.❤️【👇🏻👇🏻👇🏻关注我| 获取更多源码 | 优质文章】 带您学习各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、微信小程序模板 、等! 「在这里一起探讨知识,互相学习」!

3.以上内容技术相关问题✉欢迎一起交流学习 ☟   ☟   ☟

相关文章:

基于django图书信息管理系统的搭建(增删改查)

✍django项目搭建教程 ☞ ----------------- 教程 本文主要讲解django如何连接数据库MySQL并且可视化展示&#xff0c;实现增删改查功能 目录 一. 创建django应用 二. 数据库配置 三. 查看数据库 四. 编写代码 4.1视图函数 4.2 配置URL 4.3创建模板文件 4.…...

Python 编程题 第四节:斐波那契数列、列表的复制、暂停后输出、成绩评级、统计字符

斐波那契数列 方法一&#xff08;递归&#xff09; def f(a):if a1:return 1elif a2:return 1else:return f(a-1)f(a-2) print(f(3)) 方法二&#xff08;非递归&#xff09; nint(input()) lst[1,1] for i in range(2,n1):lst.append(lst[i-1]lst[i-2]) print(lst[n-1]) 列…...

【华为OD机考】华为OD笔试真题解析(15)--异常的打卡记录

题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据&#xff0c;也是计算职工工资的原始依据&#xff0c;为了正确地计算职工工资和监督工资基金使用情况&#xff0c;公司决定对员工的手机打卡记录进行异常排查。 如果出现以下两种情况&#xff0c;则认为打卡异常…...

跟我学C++中级篇——定时器的设计

一、定时器 谈到定时器&#xff0c;理论上讲是各种语言和各种设计都无法避开的一个技术点。对于定时器来说&#xff0c;表面上就是一种时间间隔的处理约定&#xff0c;但对程序来说&#xff0c;可能就是设计层面、接口层面和库或框架以及系统应用的一个大集合。不同的系统&…...

HTTP 请求时传递多部分表单数据

HTTP 请求时传递多部分表单数据&#xff08;multipart/form-data&#xff09; --data-raw $------demo11111\r\nContent-Disposition: form-data; name"Filedata"; filename"截屏2025-02-27 15.45.46.png"\r\nContent-Type: image/png\r\n\r\n\r\n------d…...

第J3-1周:DenseNet算法 实现乳腺癌识别

文章目录 一、前言二、前期准备1.设置GPU2.划分数据集 三、搭建网络模型1.DenseLayer模块2.DenseBlock模块3.Transition模块4.构建DenseNet5.构建densenet121 四、训练模型1.编写训练函数2.编写测试函数3.正式训练 五、结果可视化1.Loss与Accuracy图2.模型评估 总结&#xff1a…...

Mac 版 本地部署deepseek ➕ RAGflow 知识库搭建流程分享(附问题解决方法)

安装&#xff1a; 1、首先按照此视频的流程一步一步进行安装&#xff1a;(macos版&#xff09;ragflowdeepseek 私域知识库搭建流程分享_哔哩哔哩_bilibili 2、RAGflow 官网文档指南&#xff1a;https://ragflow.io 3、RAGflow 下载地址&#xff1a;https://github.com/infi…...

【解决】OnTriggerEnter/OnTriggerExit 调用匿名委托误区的问题

开发平台&#xff1a;Unity 开发语言&#xff1a;CSharp 6.0 开发工具&#xff1a;Visual Studio 2022   问题背景 public void OnTriggerEnter(Collider collider) {output.OnInteractionNoticed () > OnInteractionTriggered?.Invoke(); }public void OnTriggerExit(C…...

vscode集成DeepSeek

vscode 扩展 安装 Cline Meet Cline&#xff0c;一个可以使用你的CLI和编辑器的AI助手。 得益于 Claude 3.5 Sonnet的代理编码功能&#xff0c;Cline 可以逐步处理复杂的软件开发任务。借助让他创建和编辑文件、探索大型项目、使用浏览器和执行终端命令(在您授予权限后)的工具&…...

MapReduce编程模型

MapReduce编程模型 理解MapReduce编程模型独立完成一个MapReduce程序并运行成功了解MapReduce工程流程掌握并描述出shuffle全过程&#xff08;面试&#xff09;独立编写课堂及作业中的MR程序理解并解决数据倾斜 1. MapReduce编程模型 Hadoop架构图 Hadoop由HDFS分布式存储、M…...

SQL server2022的详细安装流程以及简单使用

鉴于SQL Server2008R2版本过于老旧&#xff0c;本文主要讲述如何安装SQL Server 2022。 本文主要详细介绍SQL server2022的详细安装流程以及简单使用&#xff0c;以《数据库系统概论&#xff08;第5版&#xff09;》的第79页—第80页为例&#xff0c;详细介绍如何使用SQL serv…...

Linux的诞生:一场自由与协作的技术革命

Linux的诞生&#xff1a;一场自由与协作的技术革命 在今天的互联网世界&#xff0c;Linux几乎无处不在——从智能手机&#xff08;Android内核&#xff09;到超级计算机&#xff0c;从云计算平台到家用路由器&#xff0c;它的身影渗透在技术的各个角落。但这样一个改变世界的操…...

Pytorch为什么 nn.CrossEntropyLoss = LogSoftmax + nn.NLLLoss?

为什么 nn.CrossEntropyLoss LogSoftmax nn.NLLLoss&#xff1f; 在使用 PyTorch 时&#xff0c;我们经常听说 nn.CrossEntropyLoss 是 LogSoftmax 和 nn.NLLLoss 的组合。这句话听起来简单&#xff0c;但背后到底是怎么回事&#xff1f;为什么这两个分开的功能加起来就等于…...

Go入门之文件

以只读方式打开文件 package mainimport ("fmt""io""os" )func main() {file, err : os.Open("./main.go")defer file.Close()if err ! nil {fmt.Println(err)return}fmt.Println(file)var tempSlice make([]byte, 128)var strSlice…...

基因型—环境两向表数据分析——品种生态区划分

参考资料&#xff1a;农作物品种试验数据管理与分析 用于品种生态区划分的GGE双标图有两种功能图&#xff1a;试点向量功能图和“谁赢在哪里”功能图。双标图的具体模型基于SD定标和h加权和试点中心化的数据。本例中籽粒产量的GGE双标图仅解释了G和GE总变异的53.6%&#xff0c;…...

Leetcode2414:最长的字母序连续子字符串的长度

题目描述&#xff1a; 字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说&#xff0c;字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。 例如&#xff0c;"abc" 是一个字母序连续字符串&#xff0c;而 "ac…...

React(12)案例前期准备

1、创建项目 npx creat-react-app xxx 这里注意 react版本过高会导致antd组件无法安装 需要手动修改pagejson文件中的react和react-demo版本号为 18.2.0 npm i 在配置别名路径 创建craco文件 const path require("path"); module.exports {webpack: {alias: …...

2025年2月28日(RAG)

从图片中的内容来看&#xff0c;用户提到的“RAG”实际上是“Retrieval-Augmented Generation”的缩写&#xff0c;中文称为“检索增强生成”。这是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的技术&#xff0c;用于增强自然语…...

python-leetcode-寻找重复数

287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; class Solution:def findDuplicate(self, nums: List[int]) -> int:# Step 1: 找到环的相遇点slow nums[0]fast nums[0]# 使用快慢指针&#xff0c;直到相遇while True:slow nums[slow] # 慢指针走一步fast nu…...

Vue 3 中,如果 public 目录下的 .js 文件中有一个函数执行后生成数据,并希望将这些数据传递到组件中

在 Vue 3 中&#xff0c;如果 public 目录下的 .js 文件中有一个函数执行后生成数据&#xff0c;并希望将这些数据传递到组件中&#xff0c;可以使用 window.postMessage&#xff0c;但需要结合具体场景。以下是不同方法的详细说明&#xff1a; 方法 1&#xff1a;使用 window…...

MongoDB8.0新特性实战:向量搜索、时序集合与分片集群优化

MongoDB 8.0新特性实战:向量搜索、时序集合与分片集群优化 作者:Crown_22 | AI Agent & Hermes Agent 桌面程序开发者 前言 MongoDB 8.0 是一个重大版本更新,带来了多项面向 AI 和大数据场景的新特性。其中最引人注目的是原生向量搜索(Vector Search)——这让 MongoD…...

保姆级教程:在Ubuntu 22.04上搞定rMATS 4.1.2安装,附赠conda环境配置与常见报错解决

从零搭建rMATS分析环境&#xff1a;Ubuntu 22.04实战指南与避坑手册当实验室新购置的Ubuntu服务器静静躺在角落&#xff0c;而导师那句"下周组会汇报可变剪切分析结果"还在耳边回响时&#xff0c;作为生物信息学新手的你&#xff0c;是否感到一阵恐慌&#xff1f;别担…...

Loop:终极免费开源Mac窗口管理工具,彻底解决桌面杂乱问题

Loop&#xff1a;终极免费开源Mac窗口管理工具&#xff0c;彻底解决桌面杂乱问题 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否曾经因为Mac上杂乱的窗口布局而效率低下&#xff1f;当多个应用同…...

Windows平台安卓应用安装终极解决方案:APK Installer技术深度解析

Windows平台安卓应用安装终极解决方案&#xff1a;APK Installer技术深度解析 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器&#xff1…...

面霸AI · 用 Multi-Agent 让面试模拟卷出天际

&#x1f9d1;‍&#x1f4bb; 博主介绍 & 诚邀关注 作者&#xff1a;专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作&#xff1b;工作后持续分享毕设思路&#xff0c;助力毕业生顺利完成…...

AI 伪造图像在电信诈骗攻防中的应用与治理研究 —— 以韩国诱捕诈骗快递员案为例

摘要 2026 年 5 月 22 日韩国首尔西部地方法院审理的投资类电信诈骗案件中&#xff0c;受害人在遭遇假冒分析师诱导、虚假证券 APP 欺诈并已损失 1200 万韩元后&#xff0c;面对诈骗团伙以 “提现手续费” 为名进一步索要 1990 万韩元现金的行为&#xff0c;利用 AI 生成伪造现…...

光声光谱结合机器学习实现乳腺癌早期无创诊断的技术解析

1. 项目概述&#xff1a;当光声光谱遇上机器学习&#xff0c;我们如何“听”出乳腺癌的早期信号&#xff1f;在生物医学检测领域&#xff0c;我们一直在寻找一种能够“透视”组织生化本质的非侵入性“慧眼”。传统的超声看结构&#xff0c;MRI看水分子&#xff0c;但它们对早期…...

CTSD算法超参数调优实战:从原理到应用,解决机器翻译重复与幻觉问题

1. 项目概述&#xff1a;当机器翻译开始“复读”&#xff0c;我们如何用CTSD算法精准调校&#xff1f;在机器翻译的实际部署和优化中&#xff0c;一个让工程师和研究者都颇为头疼的问题是&#xff1a;模型有时会像卡住的唱片一样&#xff0c;反复输出相同的词或短语。这种现象&…...

因果推断中倾向得分校准:提升双稳健机器学习估计精度的关键

1. 项目概述&#xff1a;当因果推断遇上“不准”的机器学习在观察性研究中做因果推断&#xff0c;就像在迷雾中寻找一条真实的路径。我们手头有大量的数据&#xff08;协变量X&#xff09;、处理状态&#xff08;D&#xff0c;比如是否参加了某个培训项目&#xff09;和结果&am…...

Android HTTPS抓包原理与HTTPCanary证书配置全解

1. 这不是“绕过”&#xff0c;而是理解Android HTTPS抓包的底层逻辑HTTPCanary 是 Android 平台上少有的、真正能稳定抓取 HTTPS 流量的本地代理工具。但几乎所有新手在首次使用时都会卡在同一个地方&#xff1a;明明安装了 HTTPCanary 自带的证书&#xff0c;App 依然拒绝建立…...