2017-05-25 68 views
0

我正在使用url_for和Python Flask发生错误。错误如下: MissingSchema: Invalid URLurl_for url_for无效的网址

不知道是什么问题。这里是我的代码:

@app.route("/", methods=('GET', 'POST')) 
def landing(): 
    form = forms.OptinForm() 
    if form.validate_on_submit(): 
     requests.get(url_for('indoctrination', email=form.email.data, name=form.first_name.data)) 
    return render_template('index.html', form=form) 

回答

0

在您的使用情况,url_for正在恢复像/some/example的相对路径。 requests.get需要完整的绝对路径,如http://example.com/some/path。您可能想要在相对路径前添加基础URL。

+1

这是正确的答案,但'url_for'也可以使用'_external'关键字arg为'url_for('indoctrination',...,_external = True)'生成完整的URL。 [docs](http://flask.pocoo.org/docs/0.12/api/#flask.url_for) – jonafato

+0

用_ _external = True解决了它# 谢谢你们。 – freefly0313

+0

@jonafato酷!我以前从未使用'_external',但它看起来非常有用!不知道它是否总能按预期工作(例如,如果你使用Flask来提供两个不同的主机名,'_external'使用'SERVER_NAME',它将是'localhost'或'0.0.0.0'或者其中一个主机名或者其他东西你可能希望在请求进入这个路由的同一个主机名上发出这个请求,在这种情况下,你需要在请求前添加'base_url'到相对的'url_for'路径。 @ freefly0313很高兴你的工作! –