我有一个HTML索引页面,该页面将输入数据发送到python脚本,该脚本处理数据并将其输出到第二HTML页面。在本地主机上,该过程运行正常,并且可以根据需要显示数据。但是,当我尝试在线托管进程时,出现错误消息,指出找不到URL。如果有帮助,我正在使用Heroku。
对于任何可怜的术语,请提前道歉。我才刚刚开始学习如何编码。
第一个HTML
<form action = "https://webaddress/result" method = "POST">
<h1> Enter info: </h1>
<input type="text" name="info">
<input type="submit" value="Submit"/>
</form>
Python:
from flask import Flask, render_template, request
from bs4 import BeautifulSoup
import requests
# https://doi.org/10.2118/21513-MS
app = Flask(__name__)
@app.route('/')
def student():
return render_template('Trial.html')
@app.route('/result.html',methods = ['POST', 'GET'])
def result():
return render_template("result.html",result = output)
if __name__ == '__main__':
app.run(debug = True)
第一个HTML中的输入将被发送到python节,在输出到result.html之前,将其分解并重新排列(省去了那部分,因此python代码不会太长)。这在使用http://localhost:5000/和http://localhost:5000/result的本地主机上起作用。
在Heroku上运行它时,出现错误消息:
未找到
在此服务器上找不到请求的URL /结果。
更新:问题已解决。
答案 0 :(得分:0)
在了解您的results()函数时遇到一些问题。 output
在任何地方都没有定义,type
根本没有使用。
我相信您的action
参数不正确。
尝试:<form action="/result" method = "POST">
以下是我为您共同破解的内容的工作版本:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET'])
def home():
return '''
<form action="/result" method = "POST">
<h1> Enter info: </h1>
<input type="text" name="info">
<input type="submit" value="Submit"/>
</form>
'''
@app.route('/result',methods = ['POST', 'GET'])
def result():
if request.method == 'POST':
type = ''
if 'info' in request.form:
result = request.form['info']
return result
if __name__ == '__main__':
app.run(debug=True, port=8888, host='0.0.0.0')
答案 1 :(得分:0)
您的表单引用了/result
(无扩展名.html
),但您的路线却是面向/result.html
(扩展名是 with )。尝试从您的路线中删除.html
:
@app.route('/result', methods=['POST', 'GET'])
def result():
return render_template("result.html", result=output)