Python(Flask) 用户输入表单

Python(Flask) User Input form

我是 python flask 的新手,只是想检查下面的代码,我哪里做错了。

当我 运行 时 URL 就像 (localhost:5000/submit?name=dial&id=565337) 它是 运行 正确的,虽然它不是 运行 当我在表单上传递值并产生错误。

from flask import Flask, request, redirect, url_for
import Eoc_Summary
import Eoc_Daily
import Eoc_AdSize
import Eoc_Video
import Eoc_Intraction
import EOC_definition
from config import Config

app = Flask(__name__)

form = '''
<html>
   <body>
      <form action = "http://localhost:5000" method="POST">
         <p>Enter Name:</p>
         <p><input type = "text" name = "name" /></p>
         <p>Enter id:</p>
         <p><input type = "text" name = "id" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>
'''

@app.route("/")
def index():
    if request.method == 'GET':
        return form
    elif request.method == 'POST':
        name = request.form['name']
        id = request.form['id']
        return submit(name, id)

@app.route('/submit')
def submit():
    name = request.args.get('name')
    id = request.args.get('id')
    c = Config(name, int(id))

    obj_summary=Eoc_Summary.Summary(c)
    obj_summary.main()
    obj_daily=Eoc_Daily.Daily(c)
    obj_daily.main()
    obj_adSize=Eoc_AdSize.ad_Size(c)
    obj_adSize.main()
    obj_Video=Eoc_Video.Video(c)
    obj_Video.main()
    obj_Intraction=Eoc_Intraction.Intraction(c)
    obj_Intraction.main()
    obj_definition=EOC_definition.definition(c)
    obj_definition.main()
    c.saveAndCloseWriter()
    return 'Report Generated'


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

您必须在装饰器中添加方法

@app.route("/", methods=['GET', 'POST'])
def index():
   {...}

此外,您还必须将参数 nameid 添加到 submit():

@app.route('/submit')
def submit(name, id):
   {...}

最后,导入make_response

from flask import Flask, request, redirect, url_for, make_response