基于Python+Django+MySQL实现Web版的增删改查

    Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web。

开发环境

  • 开发工具:Pycharm 2020.1
  • 开发语言:Python 3.8.0
  • Web框架:Django 3.0.6
  • 数据库:MySQL5.7
  • 操作系统:Windows 10

项目实战

1. 创建项目

File- New Project- Django

稍等片刻,项目的目录结构如下图

项目创建后确认是否已安装Django和mysqlclient解释器,如何确认?file- Settings

如果没有请在Terminal终端输入以下命令完成安装

代码语言:javascript

复制

pip install django
pip install mysqlclient

如果在执行pip install 报错Read time out请设置延长下超时时间,默认15s,网络不好情况下很易超时

代码语言:javascript

复制

pip --default-timeout=180 install -U django
pip --default-timeout=180 install -U mysqlclient

参数-U是–upgrade简写,把安装的包升级到最新版本

2. 创建应用

打开Pycharm的Terminal终端,输入以下命令创建sims应用

代码语言:javascript

复制

python manage.py startapp sims

应用创建后要在项目的settings.py文件里的INSTALLED_APPS下面添加smis完成应用注册

3.配置MySQL数据库

在本地MySQL创建sms数据库,修改项目的settings连接信息由默认的sqlite修改为MySQL

代码语言:javascript

复制

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'sms','USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1','PORT': 3306}
}

测试连接,依次点击Pycharm右上角的Database- +- Data Source- MySQL

下载连接驱动和配置数据库连接信息

点击Test Connection测试连接,连接通过点击OK出现如下的结构信息表示连接本地MySQL成功

4.数据模型创建(M)

在应用sims下models.py添加Student模型

代码语言:javascript

复制

class Student(models.Model):student_no = models.CharField(max_length=32, unique=True)student_name = models.CharField(max_length=32)

5.数据模型迁移

Terminal终端输入以下两条命令,其作用第一条生成文件记录模型的变化;第二条是将模型变化同步至数据库,我们可以在数据库生成对应的表结构。

代码语言:javascript

复制

python manage.py makemigrations sims
python manage.py migrate sims

生成数据表结构如下所示

6.路由配置

本质可以理解请求路径url和处理方法的映射配置,首先在项目sms的urls.py文件中添加sims的路由配置

代码语言:javascript

复制

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, includeurlpatterns = [path('admin/', admin.site.urls),url(r'^sims/', include('sims.urls'))
]

然后在sims添加一个名为urls.py的文件,添加路由配置如下

代码语言:javascript

复制

# coding=utf-8
from django.conf.urls import url
from . import viewsurlpatterns = [url(r'^$', views.index),url(r'^add/$', views.add),url(r'^edit/$', views.edit),url(r'^delete/$', views.delete)
]

7.处理函数添加(V)

在应用sims的视图层文件views.py添加对应学生信息增删改查的处理函数,这里我使用的原生SQL,便于深入理解其执行过程。后面有时间我会在github上添加Django框架提供的操作数据库方式。

代码语言:javascript

复制

import MySQLdb
from django.shortcuts import render, redirect# Create your views here.
# 学生信息列表处理函数
def index(request):conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="sms", charset='utf8')with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:cursor.execute("SELECT id,student_no,student_name FROM sims_student")students = cursor.fetchall()return render(request, 'student/index.html', {'students': students})# 学生信息新增处理函数
def add(request):if request.method == 'GET':return render(request, 'student/add.html')else:student_no = request.POST.get('student_no', '')student_name = request.POST.get('student_name', '')conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="sms", charset='utf8')with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:cursor.execute("INSERT INTO sims_student (student_no,student_name) ""values (%s,%s)", [student_no, student_name])conn.commit()return redirect('../')# 学生信息修改处理函数
def edit(request):if request.method == 'GET':id = request.GET.get("id")conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="sms", charset='utf8')with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:cursor.execute("SELECT id,student_no,student_name FROM sims_student where id =%s", [id])student = cursor.fetchone()return render(request, 'student/edit.html', {'student': student})else:id = request.POST.get("id")student_no = request.POST.get('student_no', '')student_name = request.POST.get('student_name', '')conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="sms", charset='utf8')with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:cursor.execute("UPDATE sims_student set student_no=%s,student_name=%s where id =%s",[student_no, student_name, id])conn.commit()return redirect('../')# 学生信息删除处理函数
def delete(request):id = request.GET.get("id")conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="sms", charset='utf8')with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:cursor.execute("DELETE FROM sims_student WHERE id =%s", [id])conn.commit()return redirect('../')

8.模板页面创建(T)

学生信息列表页

代码语言:javascript

复制

<!DOCTYPE html 
<html lang="en" 
<head <meta charset="UTF-8" <title 学生列表</title 
</head 
<body 
<table border="1px" width="100%" style="border-collapse: collapse;" <a href="../sims/add" 添加学生</a <tr <th 编号</th <th 姓名</th <th 学号</th <th 操作</th </tr {% for student in students %}<tr <td align="center" {{ forloop.counter }} </td <td align="center" {{ student.student_name }} </td <td align="center" {{ student.student_no }} </td <td align="center" <a href="../sims/edit/?id={{ student.id }}" 编辑</a <a href="../sims/delete/?id={{ student.id }}" 删除</a </td </tr {% endfor %}
</table 
</body 
</html 

学生信息新增页

代码语言:javascript

复制

<!DOCTYPE html 
<html lang="en" 
<head <meta charset="UTF-8" <title 学生添加</title <style form {margin: 20px auto;width: 500px;border: 1px solid #ccc;padding: 20px}</style 
</head 
<body 
<form method="post" action="../add/" {% csrf_token %}<table <tr <th 姓名</th <td <input name="student_name" </td </tr <tr <th 学号</th <td <input name="student_no"/ </td </tr <tr <td colspan="2" <input type="submit"/ </td </tr </table 
</form 
</body 
</html 

学生信息编辑页

代码语言:javascript

复制

<!DOCTYPE html 
<html lang="en" 
<head <meta charset="UTF-8" <title 学生编辑</title <style form {margin: 20px auto;width: 500px;border: 1px solid #ccc;padding: 20px}</style 
</head 
<body 
<form method="post" action="../edit/" {% csrf_token %}<input type="hidden" name="id" value="{{ student.id }}"/ <table <tr <th 姓名</th <td <input name="student_name" value="{{ student.student_name }}" </td </tr <tr <th 学号</th <td <input name="student_no" value="{{ student.student_no }}"/ </td </tr <tr <td colspan="2" <input type="submit"/ </td </tr </table 
</form 
</body 
</html 

9.启动web服务测试

Terminal终端输入以下命令启动web服务

代码语言:javascript

复制

python manage.py runserver

服务启动后,打开浏览器输入http://127.0.0.1:8000/sims/即可进入学生信息管理列表页

10.功能演示

最后最重要的事情,看效果。我这里简单演示下,话不多说,看动态图

     基于Python+Django+MySQL环境搭建一个拥有增删改查功能的Python Web就完成了。希望能够真正帮到大家快速入门Python Web开发。

完整素材及全部代码

代码已上传csdn,0积分下载,觉得有所帮助的朋友点点赞给个关注哦,谢谢您!

基于Python+Django+MySQL实现Web版的增删改查
 

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

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

相关文章

auto->decltype

auto c11标准才有的,c14丰富了很多这个相关的用法 声明变量别用auto,auto是让编辑器来自己推断,很影响运行效率 #include<iostream> using namespace std;auto ave(int a, int b) {return a b; }int main() {cout << typeid(ave(1, 2)).name()<<endl;ret…

Colab/PyTorch - 003 Transfer Learning For Image Classification

Colab/PyTorch - 003 Transfer Learning For Image Classification 1. 源由2. 迁移学习(ResNet50)2.1 数据集准备2.2 数据增强2.3 数据加载2.4 迁移学习2.5 数据集训练&验证2.6 模型推理 3. 总结4. 参考资料 1. 源由 迁移学习已经彻底改变了 PyTorch 中处理图像分类的方式…

基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 粒子群优化算法基础 4.2 PV系统及其最大功率点跟踪 4.3 PSO在PV MPPT中的应用 5.完整工程文件 1.课题概述 基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率…

电影院购票管理系统

文章目录 电影院购票管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 电影院购票管理系统 一、项目演示 电影院售票管理系统 二、项目介绍 基于springbootvue的前后端分离电影院购票管理…

开发利器 - docker 安装运行 mysql

本文选择安装的mysql版本为5.7 &#xff0c;安装环境 mac 1、查看镜像是否存在 docker search mysql:5.7 2、拉取镜像 docker pull mysql:5.7 3、运行镜像 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 --name&#xff1a;指定容器…

4---自动化构建代码(逻辑梳理,轻松理解)

一、需求引出&#xff1a; 在使用编译器编译代码时&#xff0c;无论我们在一个项目中写了多少个文件(包括头文件、源文件)&#xff0c;我们都可以一键完成编译&#xff0c;编译器会自动处理各个文件之间的包含&#xff0c;调用关系。但是在Linux中&#xff0c;我们在一个目录下…

CSS 定位

为什么需要浮动? 我们在访问一些网站的时候, 经常会遇到如下这种情况, 有一个组件, 一直固定在屏幕的固定位置, 无论你如何滑动这个网页, 就会固定在哪里, 如下, 下图是王者荣耀的一个官网: 要实现上面的效果, 标准流或者是浮动是无法快速实现的, 此时就需要使用定位来实现.…

H3C DHCP快速配置指南

1 配置DHCP服务器动态分配IPv4地址 1.1 简介 本案例介绍配置接口工作在DHCP服务器模式&#xff0c;实现动态分配IPv4地址的方法。 1.2 组网需求 如1.2 图1所示&#xff0c;公司将交换机做为核心交换机&#xff0c;现在需要在核心交换机上划分3个VLAN网段&#xff0c;Ho…

数据结构与算法学习笔记三---循环队列的表示和实现(C++)

目录 前言 1.为什么要使用循环队列 2.队列的顺序存储方式的实现 1.定义 2.队列初始化 3.销毁 4.清空队列 5.队列是否为空 6.队列长度 7.队头 8.入队 9.出队 10.遍历队列 11.完整代码 3.参考资料 前言 这篇文章介绍循环队列的表示和用法。 1.为什么要使用循环队…

深入理解Linux下的网络监控工具:iftop

目录标题 1. 什么是iftop?2. 安装iftop在Debian/Ubuntu上安装在CentOS/RHEL上安装在其他Linux发行版上 3. 使用iftop监控网络流量命令行选项界面说明交互命令 4. 相关参数及说明 在维护和监控Linux服务器时&#xff0c;了解网络流量的细节非常重要。网络监控可以帮助我们诊断延…

远程服务器监控工具Navicat Monitor全新发布v3.0 - 支持PostgreSQL用户

Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona Server&#xff0c;并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure 和阿里云等云数据库兼容。Nav…

C# 统计代码运行时长

using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace Sci {/// <summary>/// 统计代码…

进程间通信:连接不同程序世界的桥梁

目录 一、进程间通信的重要性 二、常见的进程间通信方式 三、进程间通信的目的 四、进程间通信的本质 在计算机编程的领域中&#xff0c;进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是一个至关重要的概念。当我们在操作系统中运行多个程…

YOLOv5-7.0改进(四)添加EMA注意力机制

前言 关于网络中注意力机制的改进有很多种&#xff0c;本篇内容从EMA注意力机制开始&#xff01; 往期回顾 YOLOv5-7.0改进&#xff08;一&#xff09;MobileNetv3替换主干网络 YOLOv5-7.0改进&#xff08;二&#xff09;BiFPN替换Neck网络 YOLOv5-7.0改进&#xff08;三&…

【智能算法】鹭鹰优化算法(SBOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;Y Fu受到自然界中鹭鹰生存行为启发&#xff0c;提出了鹭鹰优化算法&#xff08;Secretary Bird Optimization Algorithm, SBOA&#xff09;。 2.算法原理 2.1算法思想…

【声呐仿真】学习记录2-运行ROV(带camera、sonar、dvl等传感器)例程

【声呐仿真】学习记录2-运行ROV&#xff08;带camera、sonar、dvl等传感器&#xff09;例程 前言第一阶段-学习Gazebo第二阶段-学习URDF、xacro第三阶段-寻找例程跑一个rexrov示例程序1.uuvsimulator quick_start2.能键盘控制的示例程序&#xff08;失败&#xff09;3.能键盘控…

Excel如何设置密码保护【图文详情】

文章目录 前言一、Excel如何设置密码保护&#xff1f;二、Excel如何取消密码保护&#xff1f;总结 前言 在软件项目开发过程中&#xff0c;会输出很多技术文档&#xff0c;其中也包括保密级别很高的服务器账号Excel文档。为了确保服务器账号相关的Excel文档的安全性&#xff0…

CSS 网格布局一行X个排列

<div class"icon-box"><divv-for"(item,index) in icon" :key"index" class"icon"style"cursor: pointer">{{item}}</div></div>.icon-box{display: grid; /**网格布局*/grid-template-columns: r…

NSS题目练习2

[LitCTF 2023]我Flag呢&#xff1f; 打开题目后查看源码即可发现flag [第五空间 2021]WebFTP 看到提示&#xff0c;首先想到用dirsearch扫描链接&#xff0c;看是否存在git泄露 发现存在git泄露&#xff0c;用githack解决 克隆提示目录为空&#xff0c;说明不正确&#xff0c…

容器监控与日志管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、Docker监控工具 二、容器日志工具docker logs 三、第三方日志工具 四、容器日志驱动 五、示例 5.1、查看容器中运行的进程的信息 5.2、查看…