Как вызвать функцию / метод на Flask из шаблона - PullRequest
0 голосов
/ 14 ноября 2018

Прежде всего, я совсем новичок в использовании колбы, но я пока не смог найти это.

Я работаю на своем веб-сайте с шаблонами Flask и Jinja, используя postgresql в качестве базы данных, я хочу иметь возможность вызывать другую функцию / метод в моем шаблоне.

Здесь я могу получить все свои акции (посты)

@shares_app.route('/shares', methods=['GET'])
@login_required
def last_shares():

    shares = fetch_last_shares()
    form = ReusableForm(request.form)
    return render_template('shares.html', form=form, shares=shares)

шаблон

{% for share in shares %}
<li class="comment"  style="border:1px solid black; padding:5px;" >
<a class="pull-left" href="#">
    <img width="35" height="35" avatar="{{share[5]}}">
</a>
<div class="comment-body">
    <div class="comment-heading">
        <h4 class="user">{{share[5]}} ({{share[4]}}) </h4>
        <h5 class="time">{{share[3]}} /</h5>
    </div>
    <p> <b>{{share[0]}} </b> / {{share[2]}}</p>
</div>
<!--comments here -->
    Here I wanna be able to get all my comments related to shares, here its where I\'m no sure if  I can call another function from my controller.
    comments = fetch_last_comments(share[0])
    {% for comment in comments %}
    Show comments here 
    {% endfor %}
<!--comments here -->

{% endfor %}

В принципе, я хочу вызывать эту функцию

def fetch_comments_by_shares(share_id):

    comments = db.query("""SELECT * FROM comments WHERE share_id = {} """.format(share_id)).getresult()

    return comments

Большое спасибо.

1 Ответ

0 голосов
/ 14 ноября 2018

Вместо того, чтобы выполнять несколько запросов к базе данных для каждого идентификатора общего ресурса, вы можете получить все комментарии для всех общих ресурсов в бэкэнде, а затем передать комментарии при визуализации шаблона.например.

render_template('shares.html', form=form, shares=shares, comments=comments)

и, если все же, вы хотите вызвать функцию python из шаблона jinja, то вы можете следовать этому ответу для того же. Вызов функции Python из jinja2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...