Python Web实战:使用Python、Django和MySQL实现基于Web的增删改查功能

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Python Web实战:使用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.创建项目(sms)

File->New Project->Django

微信图片_20230706090757.png


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

微信图片_20230706090801.png


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


微信图片_20230706090808.png


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


pip install django

pip install mysqlclient

微信图片_20230706090837.png


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


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

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

1

2

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


2.创建应用(sims)

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


python manage.py startapp sims

1

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

微信图片_20230706090857.png


3.Django配置MySQL

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

微信图片_20230706090910.png


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

微信图片_20230706090914.png


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

微信图片_20230706090932.png

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

微信图片_20230706090936.png


4.数据模型创建(M)

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

微信图片_20230706090952.png



class Student(models.Model):

   student_no = models.CharField(max_length=32, unique=True)

   student_name = models.CharField(max_length=32)

5.数据模型迁移

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

微信图片_20230706090956.png

python manage.py makemigrations sims


python manage.py migrate sims


生成数据表结构如下所示


6.路由配置

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

微信图片_20230706091001.png

from django.contrib import admin

from django.urls import path

from django.conf.urls import url, include


urlpatterns = [

   path('admin/', admin.site.urls),

   url(r'^sims/', include('sims.urls'))

]


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



# coding=utf-8

from django.conf.urls import url

from . import views


urlpatterns = [

   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框架提供的操作数据库方式。


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)


微信图片_20230706091031.png

学生信息列表页




   

   学生列表



   添加学生

   

       

       

       

       

   

   {% for student in students %}

       

           

           

           

           

       

   {% endfor %}


编号姓名学号操作
{{ forloop.counter }} {{ student.student_name }} {{ student.student_no }}

               

                   编辑

               

               

                   删除

               

           



学生信息列表页




   

   学生列表



   添加学生

   

       

       

       

       

   

   {% for student in students %}

       

           

           

           

           

       

   {% endfor %}


编号姓名学号操作
{{ forloop.counter }} {{ student.student_name }} {{ student.student_no }}

               

                   编辑

               

               

                   删除

               

           




学生信息新增页




   

   学生添加

   </code></div><div data-lake-id="ca3d96c7fd49431ed4c1f2c21c62023a"><code>        form {</code></div><div data-lake-id="541010802b7ca4a361554e5e3a577ee7"><code>            margin: 20px auto;</code></div><div data-lake-id="020a41fda1122b5c932f75081685f2c1"><code>            width: 500px;</code></div><div data-lake-id="b178a1feb2acf298fcdf12bec45e7928"><code>            border: 1px solid #ccc;</code></div><div data-lake-id="fd59ef5997d7927e8d00c71907902bef"><code>            padding: 20px</code></div><div data-lake-id="e9a163372a357f4ac29085d8a098bde8"><code>        }</code></div><div data-lake-id="a73ffe722994ad025912179bb0de99ed"><code>    



   {% csrf_token %}

   

       

           

           

       

       

           

           

       

       

           

       

   

姓名
学号

               

           





   

   学生添加

   

       form {

           margin: 20px auto;

           width: 500px;

           border: 1px solid #ccc;

           padding: 20px

       }

   


学生信息编辑页




   

   学生编辑

   </code></div><div data-lake-id="17299293b2f1a41b765c22f7da44ac4c"><code>        form {</code></div><div data-lake-id="cfb68f4608e5c6183e4c06583f7f57e3"><code>            margin: 20px auto;</code></div><div data-lake-id="24b63e61e6b75d17ab3f21eb89a3f762"><code>            width: 500px;</code></div><div data-lake-id="c7885719259b68d99d00bd22b59c1e13"><code>            border: 1px solid #ccc;</code></div><div data-lake-id="46d2c73462a7ad424aad6ef19edc49e4"><code>            padding: 20px</code></div><div data-lake-id="55b287c9f40b8d71c29ebd4d1e91f167"><code>        }</code></div><div data-lake-id="155a489686eb3bb9a0d7c2c0a506f14a"><code>    



   {% csrf_token %}

   

   

       

           

           

       

       

           

           

       

       

           

       

   

姓名
学号

               

           





9.启动web服务测试

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


python manage.py runserver

微信图片_20230706091038.png



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


10.功能界面演示

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


微信图片_20230706091041.gif

结语

至此,基于Python+Django+MySQL环境搭建一个拥有增删改查功能的Python Web就完成了。希望能够真正帮到大家快速入门Python Web开发。如果在搭建过程中您有遇到什么问题,欢迎在下方留言,看到我会立即回复的!可以的话给个关注哦,谢谢您!


附录

最后附上项目整个源码的github仓库地址 https://github.com/hxrui/python-diango-web.git,欢迎star交流学习。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
django(五)连接mysql
我正在参加「掘金·启航计划」 Django 默认支持的数据库是sqlite,但是正常我们使用的是mysql,因此我们需要修改一下他的默认配置。 首先,放一下我们的项目根目录结构:
19 0
|
10天前
|
关系型数据库 MySQL 数据库
django配置mysql
django配置mysql
15 0
|
2月前
|
SQL 关系型数据库 MySQL
Django入门ORM(Django操作MySQL) 专题一
Django入门ORM(Django操作MySQL) 专题一
|
5月前
|
数据可视化 Python
python+Django+Mysql+Echarts数据可视化实战教程(1):Django环境部署
python+Django+Mysql+Echarts数据可视化实战教程(1):Django环境部署
146 0
|
5月前
|
数据可视化 前端开发 JavaScript
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
119 0
|
6月前
|
SQL 关系型数据库 MySQL
Django第1步_创建applicaton连接mysql
Django第1步_创建applicaton连接mysql
42 0
|
7月前
|
SQL 关系型数据库 MySQL
Django配置Mysql
Django配置Mysql
72 0
|
7月前
|
SQL 关系型数据库 MySQL
django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
|
7月前
|
SQL 网络协议 关系型数据库
基于python(Django、Mysql)的超市管理系统的设计与实现
Python语言功能强大,可以运用在诸多方面,其中在Web开发方向也有一系列十分成功的应用,同时为了方便开发,提升开发效率出现了一系列的开发框架,其中 Django 就是一个典型的重量级选手,它帮助我们解决了开发中很多问题,比如模板、数据处理等等,这些使得我们只需要使用 Django 就可以完成大多数的开发任务。 数据库采用MySQL,它是一种关系型数据库管理系统,关系数据库将数据保存在不
184 0
|
8月前
|
前端开发 关系型数据库 MySQL
Django 自定义装饰器解决MySQL server has gone away错误
Django 自定义装饰器解决MySQL server has gone away错误
59 0
推荐文章
更多