主要步骤如下几个方面:
1.店铺信息数据表
2.定义模型Model类
3.编写视图文件views
4.编写urls路由文件
5.编写视图文件
=========================================================================
(1). 店铺信息数据表:shop
- 在数据库
osdb
中创建shop
表,若此表已存在请跳过
-- 店铺信息表
CREATE TABLE `shop` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '店铺id',
`name` varchar(255) NOT NULL COMMENT '店铺名称',
`cover_pic` varchar(255) DEFAULT NULL COMMENT '封面图片',
`banner_pic` varchar(255) DEFAULT NULL COMMENT '图标Logo',
`address` varchar(255) DEFAULT NULL COMMENT '店铺地址',
`phone` varchar(255) DEFAULT NULL COMMENT '联系电话',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1:正常 2:暂停 9:删除',
`create_at` datetime DEFAULT NULL COMMENT '添加时间',
`update_at` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
(2). 定义模型Model类
- 进入
myadmin
应用目录中编辑:myobject/myadmin/models.py
模型文件
#店铺信息模型
class Shop(models.Model):
name = models.CharField(max_length=255) #店铺名称
cover_pic = models.CharField(max_length=255)#封面图片
banner_pic = models.CharField(max_length=255)#图标Logo
address = models.CharField(max_length=255) #店铺地址
phone = models.CharField(max_length=255) #联系电话
status = models.IntegerField(default=1) #状态:1正常/2暂停/9删除
create_at = models.DateTimeField(default=datetime.now) #创建时间
update_at = models.DateTimeField(default=datetime.now) #修改时间
def toDict(self):
shopname = self.name.split("-")
return {'id':self.id,'name':shopname[0],'shop':shopname[1],'cover_pic':self.cover_pic,'banner_pic':self.banner_pic,'address':self.address,'phone':self.phone,'status':self.status,'create_at':self.create_at.strftime('%Y-%m-%d %H:%M:%S'),'update_at':self.update_at.strftime('%Y-%m-%d %H:%M:%S')}
class Meta:
db_table = "shop" # 更改表名
(3). 编辑视图文件
- 新建视图文件:myobject/myadmin/views/shop.py 视图文件,并进行编辑
from django.shortcuts import render
from django.http import HttpResponse
from django.http import JsonResponse
from django.core.paginator import Paginator
from datetime import datetime
import time
from myadmin.models import Shop
def index(request,pIndex=1):
'''浏览信息'''
smod = Shop.objects
mywhere=[]
list = smod.filter(status__lt=9)
# 获取、判断并封装关keyword键搜索
kw = request.GET.get("keyword",None)
if kw:
# 查询店铺名称中只要含有关键字就可以
list = list.filter(name__contains=kw)
mywhere.append("keyword="+kw)
# 获取、判断并封装状态status搜索条件
status = request.GET.get('status','')
if status != '':
list = list.filter(status=status)
mywhere.append("status="+status)
list = list.order_by('id') #对id排序
#执行分页处理
pIndex = int(pIndex)
page = Paginator(list,5) #以5条每页创建分页对象
maxpages = page.num_pages #最大页数
#判断页数是否越界
if pIndex > maxpages:
pIndex = maxpages
if pIndex < 1:
pIndex = 1
list2 = page.page(pIndex) #当前页数据
plist = page.page_range #页码数列表
#封装信息加载模板输出
context = {"shoplist":list2,'plist':plist,'pIndex':pIndex,'maxpages':maxpages,'mywhere':mywhere}
return render(request,"myadmin/shop/index.html",context)
def add(request):
'''加载添加页面'''
return render(request,"myadmin/shop/add.html")
def insert(request):
'''执行添加'''
try:
# 店铺封面图片的上传处理
myfile = request.FILES.get("cover_pic",None)
if not myfile:
return HttpResponse("没有店铺封面上传文件信息")
cover_pic = str(time.time())+"."+myfile.name.split('.').pop()
destination = open("./static/uploads/shop/"+cover_pic,"wb+")
for chunk in myfile.chunks(): # 分块写入文件
destination.write(chunk)
destination.close()
#这里还可以做图片的缩放操作,不过这么没有写
# 店铺logo图片的上传处理
myfile = request.FILES.get("banner_pic",None)
if not myfile: