如何在Django模板标记中设置globallyaaccessible上下文变量?

2024-10-01 07:50:30 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个模板标记,它从列表中返回一个随机元素。我还需要保存列表中的所有元素以及在上下文中选择的元素,然后在django调试工具栏面板中描述这些信息。在

from django import template
import random

register = template.Library()

@register.simple_tag(takes_context=True, name='pickrandomelementtag')
def pickrandomelementtag(context, list_of_random_elements):
    context.dicts[0]["key18"] = "value19"
    return random.choice(list_of_random_elements)

所以我用给定的行测试设置变量功能:

^{pr2}$

我可以在模板中访问{{key18}},但我的目标是以以后(全局)可以访问的方式设置这个变量从django调试工具栏面板。这就是我被困的地方。在

这是我的django调试工具栏面板.py文件:

from debug_toolbar.panels import Panel
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from django.template.response import SimpleTemplateResponse



class RandomPanel(Panel):
    name = "RandomPanel;"
    has_content = True
    template = 'panels/randompanel.html'

    def title(self):
        return _('Random Panel')

    def generate_stats(self, request, response):
        print('that is where I need to access key18')
        self.record_stats(
            {
                "request": request
            }
        )

我如何访问RandomPanel类对象的generate_stats方法中的上下文变量key18?或者,context是在模板标记中设置自定义龋齿的错误位置,您是否建议其他方法?非常感谢!在


Tags: djangofromimportself模板面板元素def
1条回答
网友
1楼 · 发布于 2024-10-01 07:50:30

实际上,您可以将信息存储在请求本身中。假设context_processor有{}(默认设置中有)

@register.simple_tag(takes_context=True, name='pickrandomelementtag')
def pickrandomelementtag(context, list_of_random_elements):
    context['request'].META['MY_INFO'] = "value19"
    return random.choice(list_of_random_elements)

你可以使用这个对象中的信息。在

相关问题 更多 >