如何放置" python函数"到Django项目的HTML文件

时间:2017-07-28 18:05:21

标签: django web-development-server

在Django项目中工作。我有一个index.html文件,其中包含一个名为" todas_academias"的变量,它是我创建的模型类列表。 目录:FKSC / ac_filiados / templates / ac_filiados / index.html

<md-layout id = "container" style = "max-height:40px;">

        <md-layout md-column  md-flex-xsmall="100" md-flex-small="100" md-flex-medium="33" md-flex-large="33" md-flex-xlarge="33">

                  <md-list>

                   <md-list-item  class = "md-display-2">levi</md-list-item>
                           <router-link :to = "{ name: 'About' }"><md-row>About</md-row></router-link>
                            <md-row >Customers</md-row >
                             <md-row >Contact Us</md-row >
                         <md-row >Support</md-row >
                         <md-row >Support</md-row >
                         <md-row >Support</md-row >
                      <md-row >Support</md-row >
                      <md-row >Support</md-row >
                      <md-row >Support</md-row > 
        <md-row >Support</md-row > 
              <md-row >Support</md-row >   
              <md-row >Support</md-row >   
              <md-row >Support</md-row >   
              <md-row >Support</md-row >   
              <md-row >Support</md-row >   
              <md-row >Support</md-row >   
               </md-list>   




                  </md-layout>


<md-layout md-column  md-flex-xsmall="100" md-flex-small="100" md-flex-medium="33" md-flex-large="33" md-flex-xlarge="33">


              <md-row class = "md-display-2" >Using levi</md-row >
                    <md-row >Business</md-row >
                    <md-row > <router-link class = "" :to = "{ name: 'Product' }">
                        Features
                    </router-link> </md-row>
                        <md-row >Pricing</md-row >
                         <md-row >Pricing</md-row >

                  </md-layout>

                     <md-layout md-column md-gutter  md-flex-xsmall="100" md-flex-small="100" md-flex-medium="33" md-flex-large="33" md-flex-xlarge="33">

                    <md-column class = "md-display-2">legal</md-column>
                    <md-column></md-column>
                        <md-column></md-column>

</md-layout>

我创建了一个名为&#34; ordenar&#34;的函数。在另一个目录中的python文件中。 目录:FKSC / ac_filiados / functions.py

不需要了解此功能的用途。

{% for academia in ordenar(todas_academias) %}
                 <td>{{ academia.nome_academia }}</td>
                 <td>{{ academia.estado }}</td>
                 <td>{{ academia.cidade }}</td>
                 <td>{{ academia.professor }}</td>
                 <td>{{ academia.num_alvara }}</td>
{% endfor %}

现在,我只想使用&#34; ordenar()&#34;我尝试使用index.html文件中的函数,但它没有用。 1)我是否需要导入&#34; ordenar&#34;使用之前的功能吗?如果是这样,我该如何导入它? 2)我应该放置&#34; ordenar&#34; views.py中的函数? 3)或者,是否有在HTML文件中使用此类函数的特定方法?

2 个答案:

答案 0 :(得分:1)

您可以在视图的上下文中添加函数的结果,也可以创建django模板标记包含标记doc和示例:custom-inclusion-tags

答案 1 :(得分:1)

您不应该从模板中调用函数。我会通过上下文字典将ordenar返回到视图,如下所示:

views.py

def ordenar(todas_academias):
    lista = []
    for academia in todas_academias:
        lista = lista + [academia.num_alvara]
    nova_list = lista.sort()
    nova_lista_academias = []
    for reg in nova_list:
        for academia in todas_academias:
            if reg == academia.num_alvara:
                nova_lista_academias = nova_lista_academias + [academia]
    return nova_lista_academias 

def some_view(request):
    ...
    YOUR OTHER CODE
    ...
    return render(request, 'yourtemplate.html', {ordenar: 'ordenar'})

然后在您的模板中,您或多或少会保留相同的代码:

{% for academia in ordenar %}
    <td>{{ academia.nome_academia }}</td>
    <td>{{ academia.estado }}</td>
    <td>{{ academia.cidade }}</td>
    <td>{{ academia.professor }}</td>
    <td>{{ academia.num_alvara }}</td>
{% endfor %}