DJANGO:变量通过上下文管理器传递给模板而不反映管理员更改

时间:2014-06-12 01:08:33

标签: python django apache

通过管理员更新信息时出现问题。

变量product_list和shop_list由我的base.html模板调用,以填充网站每个页面上的一些菜单

在主页上,变量被输入的地方抛出了views.py,这些变化立即得到反映。

但是在其他页面上,由context_manage.py提供变量,直到我重置apache,或者可能在一些未定义的时间段之后才会反映出这些变化......绝对不会在合理的时间内。

为什么上下文管理器无法正常工作?如何在管理员输入时确保列表在所有页面上更新,而不是将它们单独传递到每个视图?

查看index.html:

general = get_object_or_404(General, pk=1)
product_list = Product.objects.all()
shop_list = general.shop_set.all();

context_manage.py中的内容:

general = General.objects.get(pk=1)
product_list = Product.objects.all()
shop_list = general.shop_set.all();


def passProList(request):
    return {
        'product_list': product_list,
        'shop_list': shop_list,
    }

1 个答案:

答案 0 :(得分:1)

将这些变量的定义移动到他们自己的方法中或直接移动到passProList。目前,它们是在编译python文件时进行评估的。在模板中访问它们时,需要对它们进行评估。

def get_pro_lists(pk):
    general = General.objects.get(pk=pk)
    product_list = Product.objects.all()
    shop_list = general.shop_set.all()
    return product_list, shop_list


def passProList(request):
    product_list, shop_list = get_pro_lists(1)
    return {
        'product_list': product_list,
        'shop_list': shop_list,
    }