<p>这里有一个<a href="http://flask.pocoo.org/" rel="noreferrer">a flask web-application</a>的“hello world”示例,它可以提供静态html和javascript文件,使用javascript请求中的参数搜索数据库,并将结果作为json返回javascript:</p>
<pre class="lang-py prettyprint-override"><code>import sqlite3
from flask import Flask, jsonify, g, redirect, request, url_for
app = Flask(__name__)
@app.before_request
def before_request():
g.db = sqlite3.connect('database.db')
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close()
@app.route('/')
def index():
return redirect(url_for('static', filename='page.html'))
@app.route('/json-data/')
def json_data():
# get number of items from the javascript request
nitems = request.args.get('nitems', 2)
# query database
cursor = g.db.execute('select * from items limit ?', (nitems,))
# return json
return jsonify(dict(('item%d' % i, item)
for i, item in enumerate(cursor.fetchall(), start=1)))
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=5001) # http://localhost:5001/
else:
application = app # for a WSGI server e.g.,
# twistd -n web --wsgi=hello_world.application --port tcp:5001:interface=localhost
</code></pre>
<p>数据库设置代码来自<a href="http://flask.pocoo.org/docs/patterns/sqlite3/#using-sqlite-3-with-flask" rel="noreferrer">Using SQLite 3 with Flask</a>。</p>
<p><code>static/page.html</code>和<code>static/json-jquery.js</code>文件来自<a href="http://www.jquery4u.com/json/ajaxjquery-getjson-simple/" rel="noreferrer">Ajax/jQuery.getJSON Simple Example</a>,在这里,对javascript代码稍加修改,以传递不同的url和<code>nitems</code>参数:</p>
<pre><code>$(document).ready(function(){
$('#getdata-button').live('click', function(){
$.getJSON('/json-data', {'nitems': 3}, function(data) {
$('#showdata').html("<p>item1="+data.item1+" item2="+data.item2+" item3="+data.item3+"</p>");
});
});
});
</code></pre>