展示
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) ]
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})
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)
<!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>
添加
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) ]
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')
from django.db import models class Publisher(models.Model): pid = models.AutoField(primary_key=True) name = models.CharField(max_length=32)
<!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>
修改
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) ]
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})
from django.db import models class Publisher(models.Model): pid = models.AutoField(primary_key=True) name = models.CharField(max_length=32)
<!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>