Django完整增删改查系统实例代码

 更新时间:2022年08月19日 09:55:33   作者:IT女喵  
Django实现增删改查,主要是依赖于models来实现的,下面这篇文章主要给大家介绍了关于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),
]

总结

注意一定要配置好每一步。

到此这篇关于Django完整增删改查系统的文章就介绍到这了,更多相关Django增删改查系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python标准日志模块logging的使用方法

    python标准日志模块logging的使用方法

    python的标准库里的日志系统从Python2.3开始支持。只要import logging这个模块即可使用。
    2013-11-11
  • python multiprocessing 多进程并行计算的操作

    python multiprocessing 多进程并行计算的操作

    这篇文章主要介绍了python multiprocessing 多进程并行计算的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 基于Tensorflow批量数据的输入实现方式

    基于Tensorflow批量数据的输入实现方式

    今天小编就为大家分享一篇基于Tensorflow批量数据的输入实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 详解用Python为直方图绘制拟合曲线的两种方法

    详解用Python为直方图绘制拟合曲线的两种方法

    这篇文章主要介绍了详解用Python为直方图绘制拟合曲线的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 如何利用Python和matplotlib更改纵横坐标刻度颜色

    如何利用Python和matplotlib更改纵横坐标刻度颜色

    对于图表来说最简单的莫过于作出一个单一函数的图像,下面这篇文章主要给大家介绍了关于如何利用Python和matplotlib更改纵横坐标刻度颜色的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python实现简单登录验证

    Python实现简单登录验证

    这篇文章主要为大家详细介绍了Python实现简单登录验证的相关资料,需要的朋友可以参考下
    2016-04-04
  • python实现kmp算法的实例代码

    python实现kmp算法的实例代码

    这篇文章主要介绍了python实现kmp算法的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Python使用progressbar模块实现的显示进度条功能

    Python使用progressbar模块实现的显示进度条功能

    这篇文章主要介绍了Python使用progressbar模块实现的显示进度条功能,简单介绍了progressbar模块的安装,并结合实例形式分析了Python使用progressbar模块显示进度条的相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • 机器学习10大经典算法详解

    机器学习10大经典算法详解

    这篇文章主要为大家详细介绍了机器学习10大经典算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python&Matlab实现炫酷的3D旋转图

    Python&Matlab实现炫酷的3D旋转图

    这篇文章主要为大家介绍了如何利用Python和Matlab分别实现酷炫的3D旋转图,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-04-04

最新评论