Aufruf einer Python-Funktion aus einem Jinja-Vorlage
Gibt es eine Möglichkeit zum Aufruf einer Python-Funktion innerhalb einer Jinja template? Die Funktion wird einfach die Zeichenfolge years
und schalten Sie ihn in eine Liste.
years = years.replace('[', '')
years = years.replace(']', '')
years = years.split(',')
Wie kann ich rufen Sie diese auf years
in der Vorlage unten?
{% extends "base.html" %}
{% import "_macros.html" as macros %}
{% block title %}Year Results{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Year Search Results</h1>
</div>
<ul class=entries>
{% for entry in entries %}
<li><h3><a href="{{ url_for('main.grantinfo', applid=entry.appl_id) }}">{{ entry.appl_id }} : {{ entry.project_title }}</a></h3>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% if pagination %}
<div class="pagination">
{{ macros.pagination_widget(pagination, '.yearresults', years=years) }}
</div>
{% endif %}
{% endblock %}
InformationsquelleAutor jk0104 | 2015-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
years
erscheint ein JSON-Liste zu verwenden, sojson.loads
zu analysieren, anstatt Strippen und splitten von strings manuell.years
erscheint eine variable, aus der gesendet-Ansicht der Vorlage, so dass nur die Bearbeitung in der Ansicht.Wenn Sie wirklich brauchen, um dies in Vorlagen (die Sie wahrscheinlich nicht), können Sie hinzufügen
json.loads
auf der Jinja-globals.Dann verwenden Sie es in einer Vorlage wie eine normale Funktion.
InformationsquelleAutor davidism
Einen Weg zum aufrufen von Funktionen innerhalb der Vorlage ist mit
@app.context_processor
Dekorateur.In der python-Datei wie main.py
In der html-Datei wie footer.html
Ausgabe
company=name
konnte nurcompany="ABC Pvt. Ltd."
direkt, dann eben{{ company }}
imfooter.html
. Aber du bist Beispiel ist großartig, wenn es erweitert werden muss/complexified später auf, einfach nur sagen, dass es nicht eine Funktion aufrufen, wenn es gerade wieder etwas konstanter string ist (für zukünftige Leser verwirrt).Ich merke, dass diese Frage markiert-Kolben, aber Google nicht. Also es sollte erwähnt werden, dass dies ein Fläschchen spezifische Antwort. Nicht hilfreich, um jemand anderes.
InformationsquelleAutor Abhishek Gupta
Es ist wie folgt möglich:
Erste in Ihrem main.py Datei
dann gehören die folgenden irgendwo in main.py( besser tun es nach der Funktion), um die Funktion Global zugänglich
Schließlich können Sie aufrufen, oder verwenden Sie die Funktion aus dem template als solche
InformationsquelleAutor f.a.abadi