2014-11-24 29 views
0

我在python中有一個顯示名稱列表的函數。使用HTML調用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() 

我想打電話給使用瓶

在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') 
+5

1請修正你的縮進。 2.這不是關於從HTML(可能涉及Ajax)調用,而是從Jinja2模板調用的問題。 – 2014-11-24 09:31:49

+1

查看Jinja2文檔。當你在這裏時,Flask也是文檔。 – fr1tz 2014-11-24 09:39:32

回答

2

有很多方法可以做到這一點:

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 %} 
+0

我試過你的第二種方法,但它仍然無法正常工作。也不是它應該是'myfunction = search.a' – dipit 2014-11-24 11:32:37

+0

我不明白你的search.a。你的代碼有什麼問題(識別?)。這是一個你可以傳遞給Jinja2的函數引用的命中,然後在模板上調用它。如果您希望您的html從服務器獲取json,則以完全不同的方式完成此操作。 – dpgaspar 2014-11-24 20:14:56