Django完整增删改查系统实例代码
作者:IT女喵 发布时间:2022-11-13 03:07:27
标签:django,增删改查
一、效果图如下
二、使用步骤
1.创建并配置一个django项目
1.1新建一个项目ch3
django-admin startproject ch3
1.2创建应用employee
python manage.py startapp employee
1.3指定ch3项目的应用程序emyployee
在setting.py中INSTALLED_APPS下加入employee应用程序
1.4与数据库相连
1.在数据库中创建一个数据库名为testOrm
2.在setting.py文件添加与数据库连接的信息
3.添加模文件夹
1.5 定义与使用模型
模型定义在应用employee的model.py文件中,并继承model.Model类。在本次项目中定义了模型类department
class department(models.Model):
dep_name=models.CharField(max_length=32,verbose_name='部门名称',unique=True,blank=False)
dep_script=models.CharField(max_length=60,verbose_name='备注说明',null=True
1.6生成迁移文件
python manage.py makemigrations
执行生产迁移命令后会生成一下0001_initial.py文件
迁移文件生成后,使用迁移文件命令生成对应的数据表
python manage.py migrate
二、实现数据库增删改查
2.1视图文件
实现增删改查的方法
# 查询所有数据
def list_dep_old(request):
# 查询所有数据
def_list=department.objects.all()#查询方法:all(),filter(),exclude(),get()
return render(request,'test_orm_old/list_dep_old.html',{'dep_list':def_list})
#添加数据
def add_dep_old(request):
# 判断请求方式,如果post,说明前端需要提交数据
if request.method=='POST':
# 获取传过来的get()函数中的参数(html文件input()标签的name属性)
dep_name=request.POST.get('dep_name')
dep_script=request.POST.get('dep_script')
# strip()过滤
if dep_name.strip()=='':
return render(request,'test_orm_old/add_dep_old.html',{'error_info':'名称不能为空'})
# 用create()函数新建一条函数,会自动保存,不需要调用save()函数
try:
# 添加数据有两种方式:1.使用模型管理器的create()方法添加数据,2.使用模型实列save()方法保存
p=department.objects.create(dep_name=dep_name,dep_script=dep_script)
return redirect('/test_orm_old/list_dep_old/')
except Exception as e:
return render(request,'test_orm_old/add_dep_old.html',{'error_info':'输入部门名称重复或信息错误!'})
finally:
pass
return render(request,'test_orm_old/add_dep_old.html/')
#删除数据
def del_dep_old(request,dep_id):
dep_object=department.objects.get(id=dep_id)
dep_object.delete()
return redirect('/test_orm_old/list_dep_old/')
#修改数据
def edit_dep_old(request,dep_id):
if request.method=='POST':
id=request.POST.get('id')
dep_name=request.POST.get('dep_name')
dep_script=request.POST.get('dep_script')
dep_object=department.objects.get(id=id)
dep_object.dep_name=dep_name
dep_object.dep_script=dep_script
dep_object.save()
return redirect('/test_orm_old/list_dep_old/')
else:
dep_object=department.objects.get(id=dep_id)
return render(request,'test_orm_old/edit_dep_old.html',{'department':dep_object})
2.2前端页面
1.在应用下创建templates文件目录用来存放前端页面文件
2.并在templates下创建test_orm_old文件目录
2.2.1主页面(list_dep_old.xml)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页面</title>
</head>
<body>
<h1>部门列表</h1>
<div><a href="/test_orm_old/add_dep_old" rel="external nofollow" >增加一条记录</a></div>
<table border="1">
<thead>
<tr>
<td>部门名称</td>
<td>备注说明</td>
<td colspan="2">操作</td>
</tr>
</thead>
<tbody>
{% for dep in dep_list %}
<tr>
<td>{{ dep.dep_name }}</td>
<td>{{ dep.dep_script}}</td>
<td><a href="/test_orm_old/del_dep_old/{{dep.id}}/" rel="external nofollow" >删除</a> </td>
<td><a href="/test_orm_old/edit_dep_old/{{dep.id}}/" rel="external nofollow" >修改</a> </td>
</tr>
{% empty %}
<tr>
<td colspan="4">无相关记录!</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
2.2.2增加数据页面(add_dep_old.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>增加部门</title>
</head>
<body>
<div align="center">
<h1>增加部门</h1>
<hr>
<form action="" method="post">
<!-- 安全机制-->
{% csrf_token %}
<input type="hidden" name="id" id="id" value="{{ department.id }}">
<div>
<label>部门名称:</label>
<input type="text" name="dep_name" id="dep_name">
</div>
<br>
<div>
<label>备注说明:</label>
<input type="text" name="dep_script" id="dep_script">
</div>
<br>
<div>
<input type="submit" value="保存">
</div>
</form>
{{ error_info }}
</div>
</body>
</html>
2.2.3修改页面(edit_dep_old.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改部门</title>
</head>
<body>
<div align="center">
<h1>修改部门</h1>
<form action="" method="post">
{% csrf_token %}
<input type="hidden" name="id" id="id" value="{{ department.id}}">
<div>
<label>部门:</label>
<input type="text" name="dep_name" id="dep_name" value="{{ department.dep_name }}">
</div>
<br>
<div>
<label>备注:</label>
<input type="text" name="dep_script" id="dep_script" value="{{ department.dep_script}}">
</div>
<br>
<div><input type="submit" value="保存"></div>
</form>
{{ error_info }}
</div>
</body>
</html>
2.3在主项目中添加路由
from django.contrib import admin
from django.urls import path,include
from employee import views
urlpatterns = [
path('admin/', admin.site.urls),
# path('',include('employee.urls')),
path('test/',views.test),
path('list_dep_old/',views.list_dep_old),
path('test_orm_old/list_dep_old/',views.list_dep_old),
path('test_orm_old/add_dep_old/',views.add_dep_old),
path('test_orm_old/del_dep_old/<int:dep_id>/',views.del_dep_old),
]
来源:https://blog.csdn.net/m0_58877630/article/details/123855277


猜你喜欢
- python中有指定的代码进行输入操作,所以今天就由小编来为大家介绍python怎么实现键盘输入。第一首先打开电脑的python编辑工具。再
- #!/usr/bin/python # Filename: gen_salt.py impo
- keras自定义函数时候,正常在模型里自己写好自定义的函数,然后在模型编译的那行代码里写上接口即可。如下所示,focal_loss和fbet
- 特殊属性Python中对象包括很多双下划綫开始和结束的属性,这些特殊属性,有特殊用法。特殊方法含义obj.__dict__对象的属性字典ob
- 目录开源地址Cast是什么?为什么使用Cast?使用方式案例Example ‘ToString':Example ‘ToInt
- Tips:微信小程序可以在HbuilderX用HTML标签(如Ddiv、span等)写前端代码,也可以用微信小程序语法写(view、swip
- 一、设计目的1、教学目的本课程设计是学生学习完《Python程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用Pyth
- 今天,在家试试django的model的设置,如何设置的联合主键,我经过查资料和实践,把结果记录如下:例如:class user(Model
- 本文实例讲述了Go语言eclipse环境搭建的方法。分享给大家供大家参考,具体如下:1 下载eclipse2 下载goeclipsehttp
- 大家好!我是 Sergey Kamardin,是 Mail.Ru 的一名工程师。本文主要介绍如何使用 Go 开发高负载的 WebSocket
- MySQL多表join时报错如下:[Err]1267 – Illegal mix of collations(utf8_general_ci
- 本文实例讲述了Python实现基本数据结构中栈的操作。分享给大家供大家参考,具体如下:#! /usr/bin/env python#codi
- 什么是正则表达式?1、正则表达式是检擦、匹配字符串的表达式2、正则表达式是描述规则,主流语言都有良好支持3、字符串校验、查找与替换是正则表达
- 浏览器打开网页的过程就是爬虫获取数据的过程,两者是一样一样的。浏览器渲染的网页是丰富多彩的数据集合,而爬虫得到的是网页的源代码htm有时候,
- 本文实例为大家分享了mysql5.6.29的shell脚本,供大家参考,具体内容如下创建脚本mysql.sh,直接运行sh mysql.sh
- 投资有风险,选择需谨慎。 股票交易数据分析可直观股市走向,对于如何把握股票行情,快速解读股票交易数据有不可替代的作用!1 数据预处
- 这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很少有人真正理解其含义。XML的推崇者认为
- 引言众所周知,在python中我们用try…except…来捕获异常,使用raise来抛出异常,
- 如何用SysOjects来获知数据库的信息?SysObjects中就保存了数据库中所有对象的信息,如:SELECT * FROM SysOb
- 目录安装sakila索引扫描排序表结构可以使用索引扫描来做排序的情况补足前导列order by 中只包含一种排序无法使用索引扫描的情况查询条