gpt4 book ai didi

python - 将发布数据传递到脚本 flask

转载 作者:行者123 更新时间:2023-12-01 03:54:12 25 4
gpt4 key购买 nike

我有一个页面需要接受两个参数,我想在 POST 请求中发送这两个参数:登录名和密码。我不断收到 IndexError: list index out of range from Flask,我假设是因为它没有接收脚本的参数。

这是我的观点.py

@app.route("/login/", methods=['GET','POST'])
def login():
if request.method == 'POST':
name = request.form['login']
password = request.form['password']
return redirect(url_for('test', name=name, password=password))
else:
return render_template('login.html')


@app.route("/test/", methods=['POST'])
def test():
name = request.form['login']
password = request.form['password']
input = ['/mypath/test.py', name, password]
a = subprocess.Popen(input, stdout = subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
out = a.communicate()
return out

和表格

<form action="{{ url_for('test') }}" method="POST">
<input type="text" name="login">
<input type="password" name="password">
<input type="submit" value="Go">
</form>

回溯:

Traceback (most recent call last)
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 2000, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 1991, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 1567, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib64/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 1642, in full_dispatch_request
response = self.make_response(rv)
File "/usr/lib64/python3.4/site-packages/flask/app.py", line 1743, in make_response
status=status_or_headers)
File "/usr/lib/python3.4/site-packages/werkzeug/wrappers.py", line 778, in __init__
self.status = status
File "/usr/lib/python3.4/site-packages/werkzeug/wrappers.py", line 886, in _set_status
self._status_code = int(self._status.split(None, 1)[0])
IndexError: list index out of range

最佳答案

您的脚本正在正常接收 POST 值;它正在从您的角度返回响应,这就是这里的问题。您没有返回Flask expects to be returned的东西.

您将在此处返回一个元组字符串:

out = a.communicate()
return out

因为Popen.communicate() method返回(stdout, stderr)元组。

当您返回包含两个字符串元素的元组时,Flask 期望它是一个响应正文和一个状态代码。由于您的 stderr 字符串为,因此会解析状态代码(可能采用 '200 Ok' 的形式) '404 Not Found' 等形式)失败。

仅返回标准输出结果:

stdout, stderr = a.communicate()
return stdout

关于python - 将发布数据传递到脚本 flask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com