栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

08点餐项目实战之后台店铺信息管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

08点餐项目实战之后台店铺信息管理

主要步骤如下几个方面:

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:
            return HttpResponse("没有店铺logo上传文件信息")
        banner_pic = str(time.time())+"."+myfile.name.split('.').pop()
        destination = open("./static/uploads/shop/"+banner_pic,"wb+")
        for chunk in myfile.chunks():      # 分块写入文件  
            destination.write(chunk)  
        destination.close()

        #实例化model,封装信息,并执行添加
        ob = Shop()
        ob.name = request.POST['name']
        ob.phone = request.POST['phone']
        ob.address = request.POST['address']
        ob.cover_pic = cover_pic
        ob.banner_pic = banner_pic
        ob.status = 1
        ob.create_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"添加成功!"}
    except Exception as err:
        print(err)
        context={"info":"添加失败"}
    return render(request,"myadmin/info.html",context)

def delete(request,sid=0):
    '''删除信息'''
    try:
        ob = Shop.objects.get(id=sid)
        ob.status = 9
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"删除成功!"}
    except Exception as err:
        print(err)
        context={"info":"删除失败"}
    #return render(request,"myadmin/info.html",context)
    return JsonResponse(context)


def edit(request,sid=0):
    '''加载编辑信息页面'''
    try:
        ob = Shop.objects.get(id=sid)
        context={"shop":ob}
        return render(request,"myadmin/Shop/edit.html",context)
    except Exception as err:
        context={"info":"没有找到要修改的信息!"}
        return render(request,"myadmin/info.html",context)

def update(request,sid):
    '''执行编辑信息'''
    try:
        ob = Shop.objects.get(id=sid)
        ob.name = request.POST['name']
        ob.phone = request.POST['phone']
        ob.address = request.POST['address']
        ob.status = request.POST['status']
        ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        ob.save()
        context={"info":"修改成功!"}
    except Exception as err:
        print(err)
        context={"info":"修改失败"}
    return render(request,"myadmin/info.html",context)

(4). 项目urls路由信息配置
  • 打开根路由文件:myobject/myadmin/urls.py路由文件,编辑路由配置信息
from django.urls import path

from myadmin.views import index
from myadmin.views import user
from myadmin.views import shop

urlpatterns = [
    ...

    #店铺路由
    path('shop/', shop.index, name="myadmin_shop_index"),
    path('shop/add', shop.add, name="myadmin_shop_add"),
    path('shop/insert', shop.insert, name="myadmin_shop_insert"),
    path('shop/del/', shop.delete, name="myadmin_shop_del"),
    path('shop/edit/', shop.edit, name="myadmin_shop_edit"),
    path('shop/update/', shop.update, name="myadmin_shop_update"),

    ...
]

(5). 编写模板文件
  • 5.1. 打开父类模板:/templates/myadmin/base.html ,编辑导航栏代码
    ...
    
    
  • 首页
  • 员工管理
  • 店铺管理
  • ...
    • 5.2. 后台店铺信息浏览页模板:/templates/myadmin/shop/index.html

    {% extends "myadmin/base.html" %}
    
    {% block main_body %}
        
        
    店铺管理 订餐系统后台管理
    1. 首页
    2. 店铺信息管理

    店铺信息表
    {% for vo in shoplist %} {% endfor %}
    ID 店铺名称 封面图片 Logo图片 联系电话 当前状态 添加时间 修改时间 操作
    {{ vo.id }} {{ vo.name }} { vo.cover_pic }}" width="60"/> { vo.banner_pic }}" width="40"/> {{ vo.phone }} {% if vo.status == 1 %} 营业中.. {% elif vo.status == 2 %} 休息中.. {% elif vo.status == 9 %} 已删除 {% else %} 未知状态 {% endif %} {{ vo.create_at|date:'Y-m-d' }} {{ vo.update_at|date:'Y-m-d' }} 编辑
    添加店铺
    • «
    • {% for p in plist %}
    • {{p}}
    • {% endfor %}
    • »

    {% endblock %}
    • 5.3. 后台店铺信息添加表单页模板:/templates/myadmin/shop/add.html

    {% extends "myadmin/base.html" %}
    
    
    {% block main_body %}
        
        
    店铺管理 订餐系统后台管理
    1. 首页
    2. 店铺管理
    添加店铺信息
    {% csrf_token %}  
    {% endblock %}
    • 5.4. 后台店铺信息编辑模板:/templates/myadmin/shop/edit.html

    {% extends "myadmin/base.html" %}
    
    {% block main_body %}
        
        
    店铺管理 订餐系统后台管理
    1. 首页
    2. 店铺管理
    编辑店铺信息
    {% csrf_token %}     营业中...     休息中...  
    {% endblock %}

    6 运行测试
    • 在项目根目录下启动服务,并使用浏览器访问测试:http://localhost:8000/myadmin

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/1003605.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号