我有一个模板文件temp1.html,其代码如下---
{% load customtags %}
{% get_val 'VAR1' as var1 %} {% get_val 'VAR1' as var2 %}
在第二个模板文件temp2.html中,我想使用这些变量var1
,var2
和var3
。
我将在多个模板文件中使用这些变量。所以想在任何地方重用代码。
我将temp1.html包含到temp2.html中,但是这些变量无法访问temp2.html
{% include 'temp1.html' %}
那么如何在另一个模板文件中使用这些变量?
答案 0 :(得分:0)
我不知道是否可以在各个模板之间共享来自自定义标签的值,所以很抱歉,如果这不能完全符合您的要求。
但是当我需要将各种变量传递给差异模板时,我使用了一个自定义的context_processor: 您可以在“ my_app.context_processors.py”之类的文件中定义上下文变量
from django.conf import settings
from my_app.models import Authorization
def custom_contexts(request):
try:
user_level_projects = Authorization.get_user_level_projects(request.user)
except Exception:
user_level_projects = {}
# you can put here dynamics or constants data that will be accessible via the
# standard template syntaxes: ex -> {{ FILE_MAX_SIZE }}
return {
'APPLICATION_NAME': settings.APPLICATION_NAME,
'LOGO_PATH': settings.LOGO_PATH,
'APPLICATION_ABSTRACT': settings.APPLICATION_ABSTRACT,
'IMAGE_FORMAT': settings.IMAGE_FORMAT,
'FILE_MAX_SIZE': settings.FILE_MAX_SIZE,
'USER_LEVEL_PROJECTS': user_level_projects
}
然后,您必须在“ settings.py”中添加此新的context_processor
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'my_app.context_processors.custom_contexts',
],
},
},
]
注意:在此示例中,“ USER_LEVEL_PROJECTS”实际上是字典,但也可以是其他任何字典。 我找不到在文档中找到此位置的位置,但我相信您会找到更多信息。