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>

 

  

 

 

posted on 2018-12-27 20:18  C~K  阅读(500)  评论(0)    收藏  举报

导航