【问题标题】:Jinja2 : call function on clickJinja2:点击调用函数
【发布时间】:2016-09-17 17:28:22
【问题描述】:

我正在破解一个类似 cms 的系统,该系统在前端使用 Jinja2 和 Javascript,在后端使用 Python。

我在后端实现了一些 Python 函数来处理数据库。

我想从 HTML 页面启动该功能,所以我使用了 Jinja2。

问题是sn-ps {% %}{{ }} 在加载HTML 时总是被解析和处理。

我想在单击按钮或链接时执行该功能。

我怎样才能让它工作?

【问题讨论】:

  • 这不是微不足道的......你不能从前端通过 jinja 在 python 中执行一个函数。您需要在 python 中创建一个端点,例如:'mydomain.com/api/function-i-need-to-call',然后从客户端让 js 到达该端点
  • AJAX 出了什么问题?

标签: javascript python html jinja2


【解决方案1】:

Jinja2 是一个模板引擎。你对它的使用是错误的。

您可以在一些轻量级 Web 框架中创建一个小应用程序,例如 FlaskBottle,并将一些 ajax 路由路由到预期的方法。

这是一个使用 Flask 的示例:

backend.py

import os
from json import dumps
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template('cmd.html')

@app.route("/cmd")
def cmd():
    osname = os.uname()[3]
    print(osname)
    return dumps({'name': osname})

if __name__ == "__main__":
    app.run()

如文档中所述,模板必须位于项目文件夹内名为 template 的文件夹中。

cmd.html

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
        <script type="text/javascript">
            function cmd(){
                $.ajax({
                    type: "GET",
                    url: "http://0.0.0.0:5000/cmd",
                    success: function (data) { 
                        $("#result").html("dfsdfds")
                  },
                });                
            }
         </script>
    </head>
    <body>
        <a href="#" onclick="return cmd();">Item</a>
        <div id="result"></div>
    </body>
</html>

要执行它,只需运行 python backend.py。打开浏览器并转到http://127.0.0.1:500

应用在后端运行命令并返回结果。

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多