14. 项目实战之前台大堂店铺菜品展示

本文介绍如何在Django项目中实现前台大堂店铺菜品展示功能。主要涉及登录时选择店铺,登录处理视图加载菜品信息,以及模板文件显示店铺和菜品详情。通过两层for循环在首页展示店铺及其菜品。
摘要由CSDN通过智能技术生成

实现步骤:

1.为登录界面添加店铺选择项

2.在执行登录处理视图函数中加载当前店铺菜品信息

3.在大堂点餐首页中显示店铺和菜品信息,这里用了一个2层for,嵌套

  • 本节将实现前台大堂点餐中菜品展示功能,也是前台大堂点餐首页。

  • 在展示菜品信息之前我们要员工在登录时必须选择当前所在店铺,通过店铺获取对应所有菜品信息。

    (1). 首先为登陆界面添加店铺选择

  • 编辑 web/views/index.py 视图文件的login函数,完成获取要选择的店铺信息。
from myadmin.models import Shop

# ... ...

def login(request):
    '''加载登录页面'''
    shoplist = Shop.objects.filter(status=1)
    #print(shoplist)
    context = {'shoplist':shoplist}
    return render(request,"web/login.html",context)

# ... ...
  • 编辑 templates/web/login.html 登录模板文件,输出店铺下拉选项。

... ...

<div class="form-group">
    <select name="shop_id" class="form-control">
        <option value="0"> - - 请选择商铺名称 - - </option>
        {% for shop in shoplist %}
            <option value="{
  { shop.id }}">{
  { shop.name }}</option>
        {% endfor %}
    </select>
</div>

(2). 在执行登陆处理视图函数dologin()中加载当前店铺及菜品信息

  • 新建视图文件:myobject/web/views/index.py 视图文件,并进行编辑,注意函数webindex,增加了用items转换,不然数据不能遍历。
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.urls import reverse

from myadmin.models import User
from myadmin.models import Shop
from myadmin.models import Category
from myadmin.models import Product

# ... ...
def webindex(request):
    '''项目前台大堂点餐首页'''
    # 用items转换的目的是,session中的菜品和类别信息是字典形式,不能用for遍历,用items转换后就可以遍历
    context = {'categorylist':request.session.get('categorylist',{}).items()}
    return render(request,"web/index.html",context)
#
#注意:一定要把上面的几个model类导入

def login(request):
    '''加载登录页面'''
    shoplist = Shop.objects.filter(status=1)
    #print(shoplist)
    context = {'shoplist':shoplist}
    return render(request,"web/login.html",context)


def dologin(request):
    '''执行登录'''
    #判断商铺选择
    if request.POST['shop_id'] == '0':
        #context = {'info':'请选择您所在的商铺!'}
        return redirect(reverse('web_login')+"?typeinfo=1")
        #return render(request,"web/login.html",context)

    #验证判断
    verifycode = request.session['verifycode']
    code = request.POST['code']
    if verifycode != code:
        #验证码错误!
        return redirect(reverse('web_login')+"?typeinfo=2")

    try:
        #根据登录账号获取用户信息
        user = User.objects.get(username=request.POST
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oliver3455

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值