我需要获取模板的来源。我查看the template APIs并进入source code但没有成功。
显然,模板对象keeps no reference到原始源。
在弄乱我的代码库之前,我问:是否有一种简单的方法来获取模板的来源?
答案 0 :(得分:3)
Template
个对象不保留对原始源的引用,但是做保留对原始源文件的引用,您可以重新启动 - 从那里读取来源:
source = open(template_instance.origin.name, 'r').read()
答案 1 :(得分:1)
如果你确切知道加载模板的加载模板,你可以直接使用Loader方法。
from django.template.loaders.app_directories import Loader
source = Loader.load_template_source(file_name)[0]
file_name与使用loader.get_template(file_name)
加载模板时相同答案 2 :(得分:0)
有一个很棒的快捷方式叫render_to_string。
正如de docs所说:
它加载一个模板,渲染它并返回结果字符串:
from django.template.loader import render_to_string
rendered = render_to_string('my_template.html', {'foo': 'bar'})
因此,渲染的变量是一个包含模板源代码的字符串
答案 3 :(得分:-2)
模板是文本文件(通常是HTML,但不一定),在通过调用(例如django.shortcuts.render)调用时通常使用上下文呈现。如果你有一个视图功能,那应该指定它正在使用的模板。
来自文档:
from django.shortcuts import render
def my_view(request):
# View code here...
return render(request, 'myapp/index.html', {"foo": "bar"},
content_type="application/xhtml+xml")
此处,模板将是“templates / myapp / index.html”。