【发布时间】:2021-10-09 17:18:25
【问题描述】:
我想直接在 myy 模板中获取会话值,我通过该模板请求会话,然后我在另一个 html 中查看该会话
我的views.py在哪里创建了会话
class Product_detail(View):
def get(self, request, item_id,):
item = Item.objects.filter(id=item_id)
category_list = Categories.objects.all()
items = Item.objects.order_by('-update_at')
return render (request, 'product_detail.html',{"items" : item, 'category_list': category_list, 'item': items })
def post(self, request, item_id):
item = request.POST.get('item')
size = request.POST.get('Size')
cart = request.session.get('cart')
if cart:
cart[item] = size
else:
cart = {}
cart[item] = size
request.session['cart'] = cart
print(request.session['cart'])
return redirect('products:detail', item_id=item_id)
我希望在其中呈现会话的 views.py
class Cart(View):
def get (self, request):
cart = request.session.get('cart', None)
if not cart:
cart = {} # or however you define your empty cart
request.session['cart'] = cart
ids = (list(cart.keys()))
ids = (list(request.session.get('cart').keys()))
item = Item.get_items_by_id(ids)
print(item)
return render(request, 'cart.html', {'items': item })
我的html代码
<tbody style="margin-bottom: 20px;">
{% for item in items %}
<tr>
<th scope="row">{{forloop.counter}}</th>
<td> <img src="{{item.first.url}}" alt="" height="100px"></td>
<td>{{item.name}}</td>
{% for key, value in request.session.cart.items %}
{% if value == value %}
<td>{{ value }}</td>
{% endif %}
{% endfor %}
<td>{{item.price|currency}}</td>
<td> <a href="#">Remove</a> </td>
</tr>
{% endfor %}
</tbody>
所以我的会话列表中有两个值,一个是 id,另一个是它的大小,所以现在想向用户显示它选择的大小,它同时显示 id 和大小,但我只想呈现用户选择的大小
知道如何实现这一目标
过滤器
@register.filter
def item_size(cart , item):
return cart[item]
【问题讨论】:
-
@bdbd 我试过但没用,它说过滤器无效
-
你能用你的尝试更新问题吗
-
更新了问题的样子
-
应该是
{{ request.session.cart|item_size:item }}
标签: python django django-templates django-class-based-views django-sessions