day 54 django-图书管理系统_出版社的管理(展示,新增,删除,编辑)

 展示

from django.conf.urls import url
from django.contrib import admin
from app02 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^bookmanager/',views.bookmanager)
]
urls.py
from django.shortcuts import render,HttpResponse,redirect
from app02 import models

def bookmanager(request):
    Publisher = models.Publisher.objects.all()
    # print(Publisher)
    return render(request, 'bookmanager_list.html', {'bookmanager': Publisher})
views.py
from django.db import models

class Publisher(models.Model):
    pid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)

    # def __str__(self):  
    #     #     return '{} - {}'.format(self.pid,self.name)
models.py
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">
    <thead>
    <tr>
        <th>序列号</th>
        <th>PID</th>    //这个pid号指的是数据库内的id号,并不是forloop循环的id号//
        <th>出版社名称</th>
    </tr>
    </thead>
    <tbody>
    {% for i in bookmanager %}
    <tr>
         <td>{{ forloop.counter }}</td>  //!--forloop循环bookmanager对象内的个数,生成ip(1.2.3.4.....)//
         <td>{{ i.pid }}</td>     //这个pid号指的是数据库内的id号,并不是forloop循环的id号//
         <td>{{ i.name }}</td>
    </tr>
    {% endfor %}

    </tbody>
</table>
</body>
</html>
bookmanager_list.html

 

添加

from django.conf.urls import url
from django.contrib import admin
from app02 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^bookmanager/',views.bookmanager),
    url(r'^addbookmanger/',views.add_bookmanager),
    url(r'^del_bookmanager/',views.del_bookmanager),
    url(r'^edit_bookmanager/',views.edit_bookmanager)
]
urls.py
def add_bookmanager(request):
    if request.method == 'POST':
        new_name = request.POST.get('new_name','').strip()   #获取提交出版社的名称
        if not new_name:          #输入的值为空提示不能为空
            return render(request,'add_bookmanager.html',{'err_msg':'输入不能为空','name':new_name})
        obj_list = models.Publisher.objects.filter(name=new_name)   #向数据库查询数据
        if obj_list:   #如果有数据
            return render(request,'add_bookmanager.html',{'err_msg':'出版社已存在','name':new_name})  #数据已存在 返回添加页面 提示名字已存在
        #往数据库插入数据方式一
        ret = models.Publisher.objects.create(name=new_name)  #往数据库插入数据
        #往数据库插入方式二
        # ret = models.Publisher(new_name)
        # ret.save()
        return redirect('/bookmanager/')

    return render(request,'add_bookmanager.html')
views.py
from django.db import models

class Publisher(models.Model):
    pid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
models.py
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <p>
        出版社名称:<input type="text" name="new_name" value="{{ name }}"> <span>{{ err_msg }}</span>
    </p>
    <button>提交</button>
</form>
</body>
</html>
add_bookmanager.html

 

 

修改

from django.conf.urls import url
from django.contrib import admin
from app02 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^bookmanager/',views.bookmanager),
    url(r'^addbookmanger/',views.add_bookmanager),
    url(r'^del_bookmanager/',views.del_bookmanager),
    url(r'^edit_bookmanager/',views.edit_bookmanager)
]
urls.py
def edit_bookmanager(request):
    # 获取要编辑数据的PK
    pk = request.GET.get('pk')
    obj_list = models.Publisher.objects.filter(pk=pk)
    if not obj_list:
        return HttpResponse('要编辑的数据不存在')
    obj = obj_list[0]

    err_msg = ''
    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('/bookmanager/')

    # 返回一个包含原数据的form的页面
    return render(request, 'edit_bookmanager.html', {'obj': obj, 'err_msg': err_msg})
views.py
from django.db import models

class Publisher(models.Model):
    pid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
models.py
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>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>
edit_bookmanager.html

 

转载于:https://www.cnblogs.com/yanpeizhang/p/10616654.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值