gpt4 book ai didi

Django - 如何从中间件修改模板上下文

转载 作者:行者123 更新时间:2023-12-03 20:16:52 24 4
gpt4 key购买 nike

我正在创建一个 Django 中间件,用于管理带有 session 的“购物车”。我能够像这样成功地修改 session 数据:

class ShoppingCartMiddleware:

def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
# Ensure shopping cart exists
if request.session.get('shopping_cart') is None:
request.session['shopping_cart'] = {'items': []}
return self.get_response(request)

我现在需要修改模板上下文,以便我的模板可以访问有关购物车的某些信息(商品数量等)。我查看了上下文处理器,但上下文处理器无法查看 session 甚至当前上下文。

我尝试使用 process_template_response像这样钩子(Hook):
def process_template_response(self, request, response):
response.context_data['cart_num_items'] = len(request.session['shopping_cart']['items'])
return response

但显然当钩子(Hook)被执行时, response.context_dataNone .

有谁知道如何使用中间件编辑模板上下文?任何帮助,将不胜感激。

最佳答案

您不必修改上下文,因为您可以访问 request对象本身。只需添加一个新属性:

class ShoppingCartMiddleware:
...
def __call__(self, request):
shopping_cart = {'product': 'Blah', 'id': 123}
request.shopping_cart = shopping_cart
...

然后在您的模板中使用它
{{ request.shopping_cart.product }}

关于Django - 如何从中间件修改模板上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51625342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com