实现步骤:
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