使用flask将输出重定向到HTML

时间:2016-07-19 22:48:30

标签: python html flask

我正在尝试连接到数据库并在网页上显示一些数据,下面是我尝试过的:

import jaydebeapi
import jpype
import sys
from flask import Flask
from flask import request, render_template
app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template('Name.html')

@app.route('/', methods=['POST'])
def teradataconn():
    classpath="/export/home/tdgssconfig.jar:/export/home/terajdbc4.jar"
    Name = request.form['Name']
    query="select top 1 Col1, Col2, Col3 from TABLE where Col2='Name' and Col3 is null order by Col1 desc"
    jvm_path=jpype.getDefaultJVMPath()
    jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)
    conn=jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 'jdbc:teradata://HostName/DATABASE=DBNAME,USER=USER_NAME,PASSWORD=PassWord')
    cursor=conn.cursor()
    cursor.execute(query)
    rows=cursor.fetchall()
    conn.close()
    return render_template('output.html',rows=rows)

if __name__ == '__main__':
    app.run 

下面是输入将针对DB处理的名称的页面(Name.html)。

<!DOCTYPE html>
<html lang="en">
<body>
    <h1>Enter JC Name</h1>
    <form action="." method="POST">
        <input type="text" name="Name">
        <input type="submit">
    </form>
</body>
</html>

下面是显示输出(output.html):

<!DOCTYPE html>
<html lang="en">
<body>
    <p>{{ rows }}<p>
</body>
</html>

在第一页上输入名称后,我得到低于输出。请建议需要做些什么来解决它。

Bad Request

The browser (or proxy) sent a request that this server could not understand.

我删除了以下行并硬编码了值,我得到了结果,所以似乎价值没有通过,请提出任何建议。

Name = request.form['Name']

2 个答案:

答案 0 :(得分:0)

根据print request.form的输出,您的问题不在Flask中,而是在您的表单提交中。 Flask是一个接收具有键值对的表单:text:someNamemy-form:Send

(如果您尝试访问不存在的400 Bad Request属性,Flask将返回request.form错误; see docs。在这种情况下,您正在访问属性{{} 1}}。)

第二对是因为您已将Namename属性赋予value输入。没有必要这个!您可以简单地声明该元素:submit

对于第一个<input type="submit">,它发送<input>属性而不是type属性作为键是奇怪的。我无法重新创建该问题。确保您的HTML中的元素确实已声明为name,而不是<input type="text" name="Name">

答案 1 :(得分:-1)

@app.route('/', methods = ['GET','POST'])
def my_form():
    if request.method='GET':
        return render_template('Name.html')
    if request.method='POST':
        classpath="/export/home/tdgssconfig.jar:/export/home/terajdbc4.jar"
        Name = request.form['Name']
        query="select top 1 Col1, Col2, Col3 from TABLE where Col2='Name' and Col3 is null order by Col1 desc"
        jvm_path=jpype.getDefaultJVMPath()
        jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)
        conn=jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 'jdbc:teradata://HostName/DATABASE=DBNAME,USER=USER_NAME,PASSWORD=PassWord')
        cursor=conn.cursor()
        cursor.execute(query)
        rows=cursor.fetchall()
        conn.close()
        return render_template('output.html',rows=rows)