商业:
网页应用程序设计的实用背景,其中网页由原型对象、小工具构建,它们在自己的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
对答案的期望:
我正在寻找任何合理的方案来存储网页块,该方案旨在以自己的方式生活,与网页的其他元素或多或少地分开,在网络应用程序后端的类似单独的代码块中. 例如,我可以提供以下项目:
谢谢!
ps
来自 django-docs 的摘录:
- 扩展:
{% extends variable %} 使用变量的值。如果变量的计算结果为字符串,Django 将使用该字符串作为父模板的名称。如果变量的计算结果为 Template 对象,Django 将使用该对象作为父模板。
所以这意味着,使用 {% extends %} 标签,我所说的操作绝对是可能的。
- 包括:
此示例包括名称包含在变量 template_name 中的模板的内容:
{% include template_name %}
所以这可能意味着,传递给的变量{% include %}
可以只是一个带有文件名的字符串。如果它是真的,那么我的问题的答案就很明确了——在变量中定义的模板不能包含在常规模板中。
它对我来说仍然有点模棱两可,因为在 Python 中这个词name
可能被用作variable
.