Python Flask错误“缺少必需的位置参数”(即使已提供) - python

我有一个烧瓶索引路由,它正在重定向到另一个这样的路由:

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        filepath="some/path/"
        top_1 = "something"
        top_2 = "somethingelse"
        top_3 = "somethingelse"
        return redirect(url_for('display_preds', filepath=filepath, 
                                      top_1=top_1, top_2=top_2, top_3=top_3), 
                                      code=307)

并且“ display_preds”看起来像这样:

@app.route('/display_preds', methods=['GET', 'POST'])
def display_preds(filepath, top_1, top_2, top_3):
    if request.method == 'POST':
        return render_template("prediction.html")

终于在“ prediction.html”页面中,我有了这个:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Test page</title>
</head>
<body>
    <h1>This is just a test</h1>
    <img src="{{ filepath }}" alt="some text">
    <br>
    <p> {{ top_1 }} </p> <br>
    <p> {{ top_2 }} </p> <br>
    <p> {{ top_3 }} </p>
</body>
</html>

执行此操作后,我可以看到redirect()的值为“ filepath”,“ top_1”等,因为我看到它试图发布类似这样的内容:

address/display_preds?filepath=%2some%2file%2path&top_2=something&top_1=somethingelse&top_3=somethingelse

为什么我会看到错误消息:

TypeError: display_preds() missing 4 required positional arguments: 'filepath', 'top_1', 'top_2', and 'top_3'

更新:

我尝试将路由更改为@app.route('/display_preds/<filepath>/<top_1>/<top_2>/<top_3>/', methods=['GET','POST']),但这只是将错误更改为:

werkzeug.routing.BuildError: Could not build url for endpoint 'display_preds/filepath/top_1/top_2/top_3' with values ['filepath', 'top_1', 'top_2', 'top_3']. Did you mean 'display_preds' instead?

参考方案

您在哪里提供render_template的值?

您可以使用类似上下文的字典

context = {"filepath": filepath, "top_1": top_1, "top_2":top_2, "top_3": top_3}
render_template("prediction.html", context=context)

或直接在render_template中使用:

render_template("prediction.html", filepath=filepath, top_1=top_1, top_2=top_2, top_3=top3)

更新:您的重定向使用的是对新URL的GET请求,但是在您的端点中,您没有使用request.args.get("top_1")检索参数。

def display_preds():
  filepath = request.args.get("filepath")
  top_1 = request.args.get("top_1")
  ....

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

如何用'-'解析字符串到节点js本地脚本? - python

我正在使用本地节点js脚本来处理字符串。我陷入了将'-'字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…

将字符串分配给numpy.zeros数组[重复] - python

This question already has answers here: Weird behaviour initializing a numpy array of string data                                                                    (4个答案)         …

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…