如何将 "python functions" 放入 Django 项目中的 HTML 文件
How to put "python functions" into HTML files in a Django Project
在 Django 项目中工作。我有一个 index.html 文件,其中包含一个名为 "todas_academias" 的变量,它是我创建的模型列表 类。
目录:FKSC/ac_filiados/templates/ac_filiados/index.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
现在,我只想使用 index.html 文件中的 "ordenar()" 函数,正如我尝试使用的那样,但它没有用。
1)使用前需要导入"ordenar"函数吗?如果是这样,我该如何导入它?
2) 我应该把 "ordenar" 函数放在 views.py 中吗?
3) 或者,是否有在 HTML 文件中使用此类函数的特定方法?
您可以在视图的上下文中添加函数的结果或创建 django 模板标签 inclusion-tags doc and example: custom-inclusion-tags
您不应该从模板中调用函数。我会像这样通过上下文字典将 ordenar returns 传递给视图:
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 %}
在 Django 项目中工作。我有一个 index.html 文件,其中包含一个名为 "todas_academias" 的变量,它是我创建的模型列表 类。 目录:FKSC/ac_filiados/templates/ac_filiados/index.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
现在,我只想使用 index.html 文件中的 "ordenar()" 函数,正如我尝试使用的那样,但它没有用。 1)使用前需要导入"ordenar"函数吗?如果是这样,我该如何导入它? 2) 我应该把 "ordenar" 函数放在 views.py 中吗? 3) 或者,是否有在 HTML 文件中使用此类函数的特定方法?
您可以在视图的上下文中添加函数的结果或创建 django 模板标签 inclusion-tags doc and example: custom-inclusion-tags
您不应该从模板中调用函数。我会像这样通过上下文字典将 ordenar returns 传递给视图:
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 %}