如何缩短此django视图请求


def test(request):
x1 = MenuItem.objects.filter(item_category__icontains='PANCAKE')
x2 = MenuItem.objects.filter(item_category__icontains='EGG')
x3 = MenuItem.objects.filter(item_category__icontains='PANNIS')
x4 = MenuItem.objects.filter(item_category__icontains='SUBS')
x5 = MenuItem.objects.filter(item_category__icontains='WRAPS')
x6 = MenuItem.objects.filter(item_category__icontains='TEA')
x7 = MenuItem.objects.filter(item_category__icontains='FRAPPE')
x8 = MenuItem.objects.filter(item_category__icontains='SMOOTHIE')
x9 = MenuItem.objects.filter(item_category__icontains='GLUTENF')
x10 =MenuItem.objects.filter(item_category__icontains='WAFFLES')
x11 =MenuItem.objects.filter(item_category__icontains='TOAST')
x12 =MenuItem.objects.filter(item_category__icontains='HOTPASTA')
x13 =MenuItem.objects.filter(item_category__icontains='BAGELS')
x14 =MenuItem.objects.filter(item_category__icontains='FRIES')
x15 =MenuItem.objects.filter(item_category__icontains='SALADS')
x16 =MenuItem.objects.filter(item_category__icontains='DESSERTS')
context={
'p':x1,
'e':x2,
'pn':x3,
's':x4,
'w':x5,
't':x6,
'f':x7,
'sm':x8,
'gf':x9,
'wa':x10,
'to':x11,
'hp':x12,
'b':x13,
'fr':x14,
'sa':x15,
'd':x16,
}
return render(request, 'posts/test.html',context)

我知道有很多不同的方法可以缩短这个,但我正在考虑如何让精通python框架的人处理这个

Python的for ... in ...循环语句和dictionary使缩短代码变得简单。此外,当将来添加新值时,只需在data_dict中输入key: value

  • Python字典
  • Python for循环
def test(request):
data_dict = {
'p': 'PANCAKE',
'e': 'EGG',
'pn': 'PANNIS',
's': 'SUBS',
'w': 'WRAPS',
't': 'TEA',
'f': 'FRAPPE',
'sm': 'SMOOTHIE',
'gf': 'GLUTENF',
'wa': 'WAFFLES',
'to': 'TOAST',
'hp': 'HOTPASTA',
'b': 'BAGELS',
'fr': 'FRIES',
'sa': 'SALADS',
'd': 'DESSERTS',
}
context = {}
for key, value in data_dict.items():
context[key] = MenuItem.objects.filter(item_category__icontains=value)
return render(request, 'posts/test.html', context)

最新更新