【发布时间】:2013-01-04 15:12:43
【问题描述】:
业务:
Web 应用程序设计的所有实践背景,其中网页由原型对象、小工具构建,它们在自己的 view 函数中单独定义每个对象(它自己的代码,不一定是 django-view 函数)。并且为了构建一个“生产”网页,可以将它们放置在与该页面相关的常规视图中,并根据给定的源数据和其他参数生成网页元素。
例如,我有一个图表小工具,它接收源数据、参数、关于图表类型、美/颜色等,并绘制图表。如何将它与特定的应用程序分开存储,松散耦合的代码?哪种设计方法更好?
我尝试了什么:
我尝试过“愚蠢”的方式:
例如我有一个简单的视图:
from django.shortcuts import render_to_response
from django.template import Template, Context
from string import letters
def home(request):
t = Template("""<ul>
{% for key, value in d.items %}
<li>{{ key }}: {{ value }}</li>
{% endfor %}
</ul>""")
d = {k: v for v, k in enumerate(letters)}
return render_to_response('home.html', {'t': t, 'd':d})
和模板:
<html>
<head>
<title>Django tests</title>
</head>
<body>
{% include t with d=d %}
</body>
</html>
通过这样的设置,我得到:TemplateDoesNotExist
对答案的期望:
我正在寻找任何合理的方案来存储网页块,它的设计有点像自己的生活,与网页的其他元素或多或少地分开,在 web 中类似独立的代码块中-应用程序后端。 例如,我可以提供以下项目:
谢谢!
ps
django-docs 的摘录:
{% extends variable %} 使用变量的值。如果变量 计算结果为字符串,Django 将使用该字符串作为 父模板。 如果变量的计算结果为 Template 对象, Django 将使用该对象作为父模板。
也就是说,使用 {% extends %} 标签,我所说的操作绝对是可能的。
此示例包括名称为的模板的内容 包含在变量 template_name 中:
{% include template_name %}
所以这可能意味着,传递给{% include %} 的变量可以只是一个带有文件名的字符串。如果它是真的,那么我的问题的答案很明确 - 在变量中定义的模板不能包含在常规模板中。
它对我来说仍然有点模棱两可,因为在 Python 中,name 可能被用作variable 的同义词。
【问题讨论】:
标签: python django django-templates django-views