基本烧瓶形式处理

时间:2018-04-18 12:56:54

标签: python flask

我正在尝试在Flask中创建一个基本表单,它将接受输入,操作它然后返回输出。我遇到的问题是,当我运行终端并尝试让我的应用程序在http://127.0.0.1:5000/服务器上运行时,文件不可见。不确定错误在哪里?

这就是我组织文件的方式:

/Users/eas/Desktop/grota/templates/index.html

/Users/eas/Desktop/grota/templates/age.html

/Users/eas/Desktop/grota/app.py

这是app.py文件

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

@app.route('/send',methods = ['GET','POST'])
def send():
    if request.method == 'POST':
        age = request.form['age']
        return render_template('age.html',age=age)
    return render_template('index.html')
if __name__ == '__main__':
app.run()

这是index.html文件

<!DOCTYPE html>
<html>
  <head>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
  </head>

  <body>
     <h1>How old are you?</h1>
    <form method="POST" action = "/send">
      <div class = "form-group">
        <input type="text" name = "age">
      </div>
      <input class="btn btn-primary" type="submit" value="submit">
    </form>

  </body>

</html>

这是age.html文件

<!DOCTYPE html>
<html>
  <head>
  </head>

  <body>
      <h1>Your age is{{age}}</h1>
  </body>

3 个答案:

答案 0 :(得分:0)

试试这里:http://127.0.0.1:5000/send

如果这不起作用,您在控制台或浏览器中会出现什么错误?

编辑:

我刚刚尝试过它,它有效。尝试在浏览器的新选项卡中重新加载页面,看看它是否仍然存在。此错误与您在网页上输入的命名以及使用request.form['age']

索引表单的方式有关

答案 1 :(得分:0)

您没有设置根路线。

或者您打开http://127.0.0.1:5000/send

或者你可以使用这个快速而肮脏的修复(正如你在装饰器中看到的那样/和/ send都被考虑在内):

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

@app.route('/',methods = ['GET'])
@app.route('/send',methods = ['GET','POST'])
def send():
    if request.method == 'POST':
        age = request.form['age']
        return render_template('age.html',age=age)
    return render_template('index.html')

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

如果你不处理&#39; /&#39;当你打开http://127.0.0.1

时,什么都不会发生

如果您更清楚地解释了您想要获得的结果,我可以提供更好的帮助。

答案 2 :(得分:-1)

在寻找问题时,我试图解决问题,但发现了您的问题。对于包含完整代码(带有py和2个HTML文件)的解决方案,您可以查看我的repl.it:https://repl.it/@AlperenAtik/NaturalShortActivecell#main.py

问题是:

  1. 在第一个功能中,您已将循环路由到“ /发送”页面。这就是为什么您的发送页面没有出现的原因。第一个函数的路径必须为“ /”
  2. 在索引文件中,源路由显示为“ / send”。每当我将其更改为/脚本就可以正常工作
  3. 其他已经提到您的触发功能的评论者有缩进错误。适当添加主机和端口后,您的脚本即可使用。

对于那些喜欢更艰难的方式的人-在stackoverflow中看到事物-不起作用,我添加了代码块。享受。

对于main.py

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

@app.route('/',methods = ['GET','POST'])
def send():
    if request.method == 'POST':
        age = request.form['age']
        return render_template('age.html',age=age)
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host = '0.0.0.0', port = 8080

我将主机保留为'0.0.0.0',端口保留为8080。如果您在终端上运行Python,则可以尝试(host ='127.0.0.1',port:5000')。

对于templates / index.html

<!DOCTYPE html>
<html>
  <head>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
  </head>

  <body>
     <h1>How old are you?</h1>
    <form method="POST" action = "/">
      <div class = "form-group">
        <input type="text" name = "age">
      </div>
      <input class="btn btn-primary" type="submit" value="submit">
    </form>

  </body>

</html>

对于template / age.html

<html>
  <head>
  </head>

  <body>
      <h1>Your age is {{age}}</h1>
  </body>