2015-11-07 100 views
0

我在Flask中創建了一個簡單的應用程序。當用戶填入index.html中的表格時,它將返回results.html模板,該索引與索引非常相似,但結果在此返回(結果是使用表單找到的數據庫中的數據)。燒瓶 - 文件的URL設置

我想讓「results.html」能夠收到數據,這樣我就可以填寫表格,查看結果並再次填寫表格等等。

問題是我不知道如何設置「results.html」來接收這些數據,因爲當它們呈現時,仍然存在「http://127.0.0.1:5000/」而沒有任何後綴 - results.html或某些東西,因此我可以分配與輸入配合使用的功能。

@app.route('/results.html' .... 

代碼:

# -*- coding: utf-8 -*- 
from flask import request,render_template,Flask 
from databases import db_manager 

app = Flask(__name__) 
app.config.from_object(__name__) 

def is_instance(a): 
    return isinstance(a,basestring) 

app.jinja_env.globals.update(is_instance=is_instance) 


@app.route('/', methods=['GET', 'POST']) 
# @app.route('/index', methods=['GET', 'POST']) 
def index(): 
    if request.method == 'POST': 
     query = request.form['query'] 
     if query.isdigit(): 
      _data = db_manager.manager().get_subject_by_ICO(query) 
     else: 
      _data = db_manager.manager().get_subject_by_name(query) 


    else: 
     return render_template('index.html') 
    return render_template('results.html', data = _data) 


if __name__ == '__main__': 
    app.run(debug=True) 

現在,我可以去:「http://127.0.0.1:5000/」,並填寫表格,看到了數據,但我不能沒有刷新頁面再做一遍。

你知道我要做什麼嗎?

回答

0

一個簡單的例子(沒有數據庫的東西)。

app.py

# -*- coding: utf-8 -*- 
from flask import Flask, request, render_template 

app = Flask(__name__) 

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    if request.method == 'POST': 
     query = request.form['query'] 
     _data = 'querying "{q}"'.format(q=query) 
     return render_template('results.html', data=_data) 

    return render_template('index.html') 


if __name__ == '__main__': 
    app.run(debug=True) 

的index.html

<form action="" method="post"> 
<input type="text" name="query"> 
<input type="submit" value="Query"> 
</form> 

{% block results%} 
{% endblock %} 

results.html

{% extends "index.html" %} 

{% block results%} 
    {# only rendering data here #} 
    {{ data }} 
{% endblock %} 

但現在你有一個d解決不同的問題 - 重新加載頁面將再次發送POST請求。您需要使用Post/Redirect/Get pattern

app.py

# -*- coding: utf-8 -*- 
from flask import Flask, request, session, render_template, redirect, url_for 

app = Flask(__name__) 
app.config['SECRET_KEY'] = 'hard to guess string' 

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    if request.method == 'POST': 
     query = request.form['query'] 
     _data = 'querying "{q}"'.format(q=query) 
     session['data'] = _data 

     return redirect(url_for('index')) 

    return render_template('index.html', 
          data=session.get('data')) 


if __name__ == '__main__': 
    app.run(debug=True) 

的index.html

<form action="" method="post"> 
<input type="text" name="query"> 
<input type="submit" value="Query"> 
</form> 

{% block results%} 
    {{ data }} 
{% endblock %}