2015-09-04 77 views
0

我想简化(使其可读性更强)的Django模板代码:在Django模板中如何简化调用包含多个viariables?

{% comment %} 
required variables: 
group_id = 'exclude-brands-group' 
select_name = 'exclude-brands' 
entities = 'excludeBrandsSets' 
add_keyword_name = {% trans 'Brand' %} 
url_edit_keywords = {{ url_project_filter_exclude_brands_edit_keywords }} 
{% endcomment %} 

{% with group_id='exclude-keywords-group' select_name='exclude-keywords' %} 
{% with entities=excludeKeywordsSets %} 
{% trans 'Words' as add_keyword_name %} 
{% with url_edit_keywords=url_project_filter_exclude_keywords %} 
{% include 'web_site/seo/frontend/seo/filtered_keyword_idea/template/keyword_filter_group.html' %} 
{% endwith %} 
{% endwith %} 
{% endwith %} 

但是我没有想法如何减少数量与标签 - 因为包括只有一行命令。我不知道如何简化trans。你知道一些简单的方法将变量传递给模板吗?

回答

2

include tag允许您将附加上下文传递给模板。这意味着你不需要单独使用标签(尽管缺点是最终会出现很长的行)。没有任何方法可以包含trans标签。

{% trans 'Words' as add_keyword_name %} 
{% include 'web_site/seo/frontend/seo/filtered_keyword_idea/template/keyword_filter_group.html' with group_id='exclude-keywords-group' select_name='exclude-keywords' entities=excludeKeywordsSets url_edit_keywords=url_project_filter_exclude_keywords %} 
+0

如果我需要使用带'with'一个模板标签(并有那几个),猜我仍然需要在'with'标记,如:'{%与template_tag ARG1 ARG2为final_val1 %} {%with template_tag arg2 arg3 as final_val2%} {%include .... val1 = final_val1 val2 = final_val2'%} – Anupam

+0

编辑:我觉得简单的标签不需要用于赋值,所以我的意思是上面的以下内容评论:'{%template_tag arg1 arg2 as final_val1%} {%template_tag arg2 arg3 as final_val2%} {%include .... val1 = final_val1 val2 = final_val2%}' – Anupam