Django实现数据库中表格的增删查改

1.urls.py

"""Django_demo1 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01.views import classes
from app01.views import students
# from django.urls import re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('classes.html/', classes.get_classes),
    path('add_classes', classes.add_classes),
    path('del_classes', classes.del_classes),
    path('edit_classes', classes.edit_classes),
    path('students.html/', students.get_students),
    path('add_students', students.add_students),
    path('del_students', students.del_students),
    path('edit_students', students.edit_students),

]

2.models.py

from django.db import models


class Classes(models.Model):
    '''
    班级表
    '''
    title = models.CharField(max_length=32)
    m = models.ManyToManyField('Teachers')

class Teachers(models.Model):
    '''
    老师表
    '''
    name = models.CharField(max_length=32)

'''
cid tid
 1   1
 2   1
 1   1
'''
# class C2T(models.Model):
#     cid = models.ForeignKey()
#     tid = models.ForeignKey()


class Student(models.Model):
    username = models.CharField(max_length=32)
    age = models.IntegerField()
    gender = models.BooleanField()
    cs = models.ForeignKey('Classes', on_delete=models.CASCADE)

3.classes.py

from django.shortcuts import render, redirect
from app01 import models


def get_classes(request):
    cls_list = models.Classes.objects.all()
    return render(request, 'get_classes.html', {'cls_list': cls_list})


def add_classes(request):
    if request.method == 'GET':
        return render(request, 'add_classes.html')
    if request.method == 'POST':
        title = request.POST.get('title')
        models.Classes.objects.create(title=title)
        return redirect('/classes.html')


def del_classes(request):
    nid = request.GET.get('nid')
    models.Classes.objects.filter(id=nid).delete()
    return redirect('classes.html/')


def edit_classes(request):
    if request.method == 'GET':
        nid = request.GET.get('nid')
        obj = models.Classes.objects.filter(id=nid).first()

        return render(request, 'edit_classes.html', {'obj': obj})
    if request.method == 'POST':
        nid = request.POST.get('nid')
        title = request.POST.get('title')

        models.Classes.objects.filter(id=nid).update(title=title)
        return redirect('/classes.html')

4.students.py

from django.shortcuts import render, redirect
from app01 import models


def get_students(request):
    students_list = models.Student.objects.all()
    return render(request, 'get_students.html', {'students_list': students_list})


def del_students(request):
    nid = request.GET.get('nid')
    models.Student.objects.filter(id=nid).delete()
    return redirect('/students.html')


def add_students(request):
    if request.method == 'GET':
        cs_list = models.Classes.objects.all()
        return render(request, 'add_students.html', {'cs_list': cs_list})
    if request.method == 'POST':
        id = request.POST.get('id')
        username = request.POST.get('username')
        age = request.POST.get('age')
        gender = request.POST.get('gender')
        cs_id = request.POST.get('cs_id')
        models.Student.objects.create(id=id, username=username, age=age, gender=gender, cs_id=cs_id)
        return redirect('/students.html')


def edit_students(request):

    if request.method == 'GET':
        nid = request.GET.get('nid')
        # print(nid)
        class_list = models.Classes.objects.all()
        obj = models.Student.objects.filter(id=nid).first()

        return render(request, 'edit_students.html', {'obj': obj, 'class_list': class_list})
    if request.method == 'POST':
        id = request.POST.get('id')
        username = request.POST.get('username')
        age = request.POST.get('age')
        gender = request.POST.get('gender')
        cs_id = request.POST.get('cs_id')
        models.Student.objects.filter(id=id).update(id=id, username=username, age=age, gender=gender, cs_id=cs_id)
        return redirect('/students.html')

5.add_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="add_classes" method="post">
    {% csrf_token %}
    <input type="text" name="title" >
    <input type="submit" value="提交">
</form>
</body>
</html>

6.add_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/add_students" method="post">
    {% csrf_token %}
    <input type="text"  name="id" placeholder="id">
    <input type="text" name="username" placeholder="username">
    <input type="text" name="age" placeholder="age">
    男<input type="radio" name="gender" value="0">
    女<input type="radio" name="gender" value="1">
    <select name="cs_id" >
        {% for row in cs_list %}
            <option value="{{ row.id }}">{{ row.title }}</option>
        {% endfor %}
    </select>
{#    <input type="text" name="cs_id" placeholder="cs_id">#}
    <input type="submit" value="提交">
</form>
</body>
</html>

7.edit_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="edit_classes" method="post">
    {% csrf_token %}
    <input type="text" name="nid" value="{{ obj.id }}" style="display:none;" >
    <input type="text" name="title" value="{{ obj.title }}">
    <input type="submit" value="提交">
</form>
</body>
</html>

8.edit_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/edit_students" method="post">
    {% csrf_token %}
    <input type="text" name="id"  value="{{ obj.id }}">
    <input type="text" name="username" value="{{ obj.username }}">
    <input type="text" name="age" value="{{ obj.age }}">

    男<input type="radio" name="gender" value="0">
    女<input type="radio" name="gender" value="1">
    <select name="cs_id">
        {% for row in class_list %}
        <option value="{{ row.id }}">{{ row.title }}</option>
        {% endfor %}
    </select>

    <input type="submit" value="提交">

</form>
</body>
</html>

9.get_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<a href="/add_classes">添加</a>
</div>
<div>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for row in cls_list %}
<tr>
<td>
{{ row.id }}
</td>
<td>
{{ row.title }}
</td>
<td>
{# <form action="/del_classes?{{ row.id }}" method="get">#}
{# <input type="submit" value="删除">#}
{# </form>#}
<a href="/del_classes?nid={{ row.id }}" >删除</a>
|
<a href="/edit_classes?nid={{ row.id }}">编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>

</body>
</html>

10.get_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <a href="/add_students">添加</a>
</div>
<div>
    <table border="1">
        <tr>
            <th>id</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>班级</th>
            <th>操作</th>
        </tr>
        <tbody>
            {% for row in students_list %}
                <tr>
                    <td>
                        {{ row.id }}
                    </td>
                    <td>
                        {{ row.username }}
                    </td>
                    <td>
                        {{ row.age }}
                    </td>
                    <td>
                        {% if row.gender == 0 %}
                            男
                        {% endif %}
                        {% if row.gender == 1 %}
                            女
                        {% endif %}
                    </td>
                    <td>
                        {{ row.cs.title }}
                    </td>
                    <td>
                        <a href="/del_students?nid={{ row.id }}">删除</a>
                        |
                         <a href="/edit_students?nid={{ row.id }}">编辑</a>
                    </td>



                </tr>
            {% endfor %}
        </tbody>
    </table>
</div>
</body>
</html>

 

  

 

 

转载于:https://www.cnblogs.com/CK85/p/10187095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebOffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线Word/excel/wps编辑辅助控件,可以实现: 1.在线编辑Word、Excel、PPT、WPS... ... 2.全面支持MS Office的界面定制,包括对于Office2007的全面支持 3.修订留痕 4.限制打印、保存、复制 5.直接保存到服务器,支持标准Http Post协议 6.强大的书签管理 7.套红、文档保护 8.模板管理 9.其他功能扩展 10.提供开发论坛http://www.dianju.cn/forum/,在其提供软件更新及问题回答服务 本控件不同于其它同类软件,不是基于微软的开放源码DsoFramer,也不基于OLE,可以解决DsoFramer及其派生产品的一些稳定性问题 本控件不同于其它同类收费软件,本控件完全免费和界面完全可控制。 点聚会定期更新本控件,并解答论坛上的询问,免费不代表免服务,每一个使用者都能得到及时服务。 安装包内包含: 1.WebOffice安装包(仅包含WebOffice控件) 2.WebOffice接口SDK 3.WebOffice网页接口调用例子 4.DES手写及签章系统(Office签章系统)试用版。 5.演示章及证书 6.点聚产品白皮书 WebOffice组件可以无缝集成点聚公司的电子签章和手写审批类产品。 点聚信息(http://www.dianju.com.cn)是国内专业的安全和文档间件软件制造商。公司注重自主知识产权产品的研发,始终坚持技术为本、服务为先的原则,在电子印章、手写签批、安全版式文档和电子表单等领域处于国内领先水平。 点聚自主研发的版式文件系统独创性的将整个系统缩小为1M大小的组件,并在多项重要技术指标上领先PDF和其它版式格式。 点聚支持全系列手写及签章解决方案,可同时提供Office签章系统(Word/Excel/Wps)、网页签章系统、版式签章系统. 点聚是国内唯一一家同时拥有国密和军密资质的电子印章及安全文档产品提供商(国密、军密、公安部销售许可)。
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django实现针对数据的增删改查的接口、在Vuejs实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值