2016-10-19 74 views
0

大家好我有这个在我的模板创建选择

{% with 'By Visit, By Patient' as list %} 
    <div class="selector_healthApp"> 
     <div class="container"> 
     <div class="row"> 
      <div class="col-xs-3"> 
      <label for="sel1">Select Categoty:</label> 
      <select class="form-control" id="item_project"> 
       {% for cat_name in list.split %} 
       <option>{{ cat_name }}</option> 
       {% endfor %} 
      </select> 
      </div> 
     </div> 
     </div> 
    </div> 
    {% endwith %} 
{% endblock content %} 

我有一个名单,我想表明在选择

列表中的每个项目,如果我用{% for cat_name in list.split %}我有在选择

By 
Visit 
By 
Patient 

ID 4元件我使用{% for cat_name in list %}它是由字符分离

如何做到这一点在选择显示“通过访问”和“按患者”

为什么,如果我尝试在终端这部作品在进步

list = [By Visit, By Patient] 
>>> for iten in list: 
...  print iten 
... 
By Visit 
By Patient 
>>> 

感谢

+1

不要这样做。从视图中将值作为列表发送。更好的是,使用适当的形式。 –

回答

1

当您使用list.split它将分裂在空间这是造成问题。

而且Django不提供拆分模板标签,因此您不能在拆分时传递参数(即拆分“,”“)。

从这里你可以编写自己的自定义模板标签,读取,https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/

模板标签:

from django.template.defaulttags import register 


@register.filter() 
def split(value, arg): 
    return value.split(arg) 

模板:

{% load split %} 
    {% with 'By Visit, By Patient'|split:"," as list %} 
    <div class="selector_healthApp"> 
     <div class="container"> 
     <div class="row"> 
      <div class="col-xs-3"> 
      <label for="sel1">Select Categoty:</label> 
      <select class="form-control" id="item_project"> 
       {% for cat_name in list %} 
       <option>{{ cat_name }}</option> 
       {% endfor %} 
      </select> 
      </div> 
     </div> 
     </div> 
    </div> 
    {% endwith %}