【问题标题】:Call python function using HTML使用 HTML 调用 python 函数
【发布时间】:2014-11-24 09:27:52
【问题描述】:

我在 python 中有一个显示名称列表的函数。

def search():
    with open('business_ten.json') as f:
    data=f.read()
    jsondata=json.loads(data)


    for row in jsondata['rows']:
        #print row['text']
        a=str(row['name'])

        print a 
        return a

search()

我正在尝试使用 Flask 在 HTML 文件中调用此函数

{% extends "layout.html" %}
{% block content %}
<div class="jumbo">
    <h2>Welcome to the Rating app<h2>
    <h3>This is the home page for the Rating app<h3>
</div>
<body>
    <p>{{ search.a }}</p>
</body>
{% endblock %}

我的路由文件如下:

from flask import Flask,render_template
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello gugugWorld!'
@app.route('/crawl')
def crawl():
    return render_template('crawl.html')

【问题讨论】:

  • 1.请修正你的缩进。 2. 这不是关于从 HTML 调用(可能涉及 Ajax)而是从 Jinja2 模板调用的问题。
  • 查看 Jinja2 文档。当您使用它时,Flask 文档也是如此。

标签: python flask jinja2


【解决方案1】:

有很多方法可以做到这一点:

1 - 你可以注册一个新的 Jinja2 过滤器

2 - 你可以将你的函数作为 Jinja2 参数传递(这个更简单)

对于方法2:

@app.route('/crawl')
def crawl():
    return render_template('crawl.html', myfunction=search)

在模板调用中,参数有一个函数

{% extends "layout.html" %}
{% block content %}
<div class="jumbo">
<h2>Welcome to the Rating app<h2>
<h3>This is the home page for the Rating app<h3>
</div>
<body>
 <p>{{ myfunction() }}</p>
</body> 
{% endblock %}

【讨论】:

  • 我试过你的第二种方法,但还是不行。也不应该是myfunction = search.a
  • 我不明白你的搜索。您的代码有问题(标识?)。这是一个成功,您可以将函数引用传递给 Jinja2,然后在模板上调用它。如果您希望您的 html 从服务器获取 json,这是以完全不同的方式完成的。
猜你喜欢
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多