django - 将一个模板文件中的变量包含到 Django 中的另一个模板中
问题描述
我有一个模板文件 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' %}
那么如何在另一个模板文件中使用这些变量呢?
解决方案
我不知道是否可以在各种模板之间共享自定义标签中的值,如果这不能完全符合您的规范,请见谅。
但是当我需要将各种变量传递给不同的模板时,我使用了自定义 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' 实际上是一个字典,但它也可以是其他任何东西。我在文档中找不到我找到这个的地方,但我相信你会找到更多信息。
推荐阅读
- python - 在python方法中将自己的类对象作为参数传递
- ios - UIPageViewController - 改变点不起作用
- android - 由于未就 Android 许可证达成一致,通过 TFS 运行的 Gradle 构建失败
- jsonschema - 使用对象的键验证属性值是否存在
- python - 如何使用已解析的 TFRecords 数据?
- html - 更改表格第一行的字体大小和颜色
- html - 使用重复类名的 VBA 抓取网站的值
- angular - Angular7 -> 在动态加载的 HTML 中导航到 id="#article-1"
- java - 为什么它在导入 javaFX 阶段时显示非法字符:'\ufeff'
- javascript - 我不需要从承诺中控制台日志我需要存储数据