我可以在django模板中使用别名字段名吗?

FxF*_*cus 3 django django-templates

我是django和python的新手......

我有一个模型,其中包括10个通用字段attrib_00到attrib_09.

我将这些字段作为上下文传递给django模板字符串.

我想在模板中使用更有意义的名称.

模板字符串是从另一个模型中获取的,我想到的是添加一个包含逗号分隔的相关别名列表的字段.这个想法是列表中的第一个别名映射到attrib_00,第二个是attrib_01 ......

我想我需要在渲染之前修改上下文,以便将通用键替换为别名.

我在这里走在正确的轨道上吗?

有没有更好的办法?

谢谢,艾德

PS

(添加评论按钮不适合我吗?)

我还没有任何代码.也许我应该解释一下我想要实现的目标......

我有一个用delphi编写的现有应用程序,可以帮助我维护大量的ebay列表,我想将它模仿为django/python Web应用程序.

每个产品/列表属于一个类别,每个类别都有一组属性.所以例如裤子可能有颜色,腰围尺寸和腿长.每个类别的属性数量和类型各不相同,但从不超过10.

我可以看到例如attrib_00如何用于一个类别中的大小并且在另一个类别中说金属但是然后将坚持使用模板中的通用字段名称.

仅供参考: - 我想我会在返回响应之前多次调用渲染过程在视图中进行任何循环?

Jac*_* M. 5

我会说在从视图传递到模板之前在上下文中创建别名.有点像:

c = Context({'foo': attrib_01, 'bar': attrib_02, ...})
Run Code Online (Sandbox Code Playgroud)

你可以把它插入一个新的功能,这样你就不会破坏DRY,你很高兴.

更新:
就模板中实际映射而言,并非如此.毕竟,模板只是一个模板.像你一样思考的唯一接近工作的是{% with %}块:

{% with attrib_01 as foo %}
   <div class="foo">{{ foo }}</div>
{% endwith %}
Run Code Online (Sandbox Code Playgroud)

它可能会奏效,但我担心它会变得相当丑陋.