2017-07-28 59 views
0

在Django項目中工作。我有一個名爲「todas_academias」的變量index.html文件,它是我創建的模型類的列表。 目錄:FKSC/ac_filiados /模板/ ac_filiados/index.html的如何將「python函數」放入Django項目的HTML文件中

{% 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 %} 

,我創建了一個在別的目錄下的Python文件名爲 「ordenar」 功能。 目錄:FKSC/ac_filiados/functions.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 

現在,我只想用「ordenar()」功能的index.html文件,如我試圖用,但沒有奏效。 1)使用前需要導入「ordenar」函數嗎?如果是這樣,我該如何導入它? 2)我應該在view.py中放置「ordenar」函數嗎? 3)或者,有沒有在HTML文件中使用這種函數的具體方式?

回答

0

你不應該叫從模板的功能。我會通過什麼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 %} 
1

您可以在視圖的上下文中的功能添加結果或創建的Django模板標籤包含標籤doc和示例:custom-inclusion-tags

相關問題