出版社的查增删改

阅读目录:

一、首先设置app中的models

from django.db import models


class Publisher(models.Model):
    pid = models.AutoField(primary_key=True)  # 主键
    name = models.CharField(max_length=32, unique=True)  # varchar(32)

    def __str__(self):
        return self.name

二、urls的操作

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    url(r'^publisher/', views.publisher),
    url(r'^add_publisher/', views.add_publisher),
    url(r'^del_publisher/', views.del_publisher),
    url(r'^edit_publisher/', views.edit_publisher),

]

三、app中的views   及 templates 的设置

查操作   

 views  函数

# 展示出版社列表
def publisher(request):
    # 从数据库获取到所有的数据
    all_publisher = models.Publisher.objects.all().order_by('pid')
    # 返回一个包含数据的页面
    return render(request, 'publisher.html', {"all_publisher": all_publisher})

  templates

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>出版社列表</title>

</head>
<body>
<h1>出版社列表</h1>
<a href="/add_publisher/">添加</a>    # 添加操作

<table border="1">
    <thead>
    <tr>
        <th>序号</th>
        <th>名称</th>
        <th>操作</th>

    </tr>
    </thead>
    <tbody>
    {% for i in all_publisher %}    #利用for循环取每一个对象
        <tr>
            <td>{{ forloop.counter }}</td>   #序号
            <td>{{ i.name }}</td>
            <td>
                <a href="/del_publisher/?pk={{ i.pk }}">删除</a>    #删除操作
                <a href="/edit_publisher/?pk={{ i.pk }}">编辑</a>   #编辑操作
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>
</body>
</html>

增操作

views  函数

# 添加出版社
def add_publisher(request):
    err_msg, new_name = '', ''
    # 区分请求方式
    if request.method == 'POST':
        # 获取提交的名称
        new_name = request.POST.get('new_name', '').strip()

        if not new_name:
            # 提交的是空的字符串
            err_msg = '不能为空'

        # 判读新的名字在数据库中是否存在
        obj_list = models.Publisher.objects.filter(name=new_name)
        if obj_list:
            # 数据库中已存在数据,返回错误提示
            err_msg = '数据已存在'
        if new_name and not obj_list:
            # 数据不为空,且数据中不存在
            # 插入到数据库中
            ret = models.Publisher.objects.create(name=new_name)
            # print(ret, type(ret))
            # 跳转到显示页面
            return redirect('/publisher/')

        # 返回一个包含form表单的页面
    return render(request, 'add_publisher.html', {'err_msg': err_msg, 'new_name': new_name})

templates

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加出版社</title>

</head>
<body>

<form action="" method="post">
    <p>
        名称:<input type="text" name="new_name" value="{{ new_name }}"> <span>{{ err_msg }}</span>
    </p>
    <button>提交</button>
</form>

</body>
</html>

删操作:

views  函数

# 删除出版社
def del_publisher(request):
    # 获取删除的数据的PK
    pk = request.GET.get('pk')

    if not models.Publisher.objects.filter(pid=pk):
        return HttpResponse('不合法的请求')

    # 去数据库删除数据
    models.Publisher.objects.get(pid=pk).delete()
    # 跳转到展示页面
    return redirect('/publisher/')

改操作

views  函数

# 编辑出版社
def edit_publisher(request):
    err_msg = ''
    # 获取要修编辑的数据
    pk = request.GET.get('pk')
    obj_list = models.Publisher.objects.filter(pk=pk)

    if not obj_list:
        return HttpResponse('不合法的请求')

    obj = obj_list[0]

    # 区分请求方式
    if request.method == 'POST':
        # 修改数据
        new_name = request.POST.get('new_name', '').strip()
        if not new_name:
            err_msg = '不能为空'

        obj_list = models.Publisher.objects.filter(name=new_name)
        if obj_list:
            err_msg = '数据已存在'

        if new_name and not obj_list:
            # 数据不为空 且 数据库不存在 才可以修改
            obj.name = new_name
            obj.save()
            # 跳转到展示页面
            return redirect('/publisher/')

    return render(request, 'edit_publisher.html', {'obj': obj,'err_msg':err_msg})

templates

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑出版社</title>

</head>
<body>
<form action="" method="post">
    <p>
        名称:<input type="text" name="new_name" value="{{ obj.name }}"> <span>{{ err_msg }}</span>
    </p>
    <button>提交</button>
</form>
</body>
</html>

 

posted @ 2019-02-12 23:14  小萍瓶盖儿  阅读(144)  评论(0编辑  收藏  举报