2017-05-25 3 views
0

Ich renne in einen Fehler mit Hilfe von url_for mit Python Flask. Der Fehler lautet: MissingSchema: Invalid URLUngültige URL mit url_for

Nicht sicher, was das Problem ist. Hier ist mein Code:

@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) 

Antwort

0

In Ihrer Nutzung, url_for wird einen relativen Pfad wie /some/example zurück. requests.get erwartet einen vollständigen, absoluten Pfad, wie http://example.com/some/path. Wahrscheinlich möchten Sie Ihre Basis-URL vor dem relativen Pfad hinzufügen.

+1

Dies ist die richtige Antwort, aber 'url_for' kann auch die vollständige URL für Sie generieren, indem Sie das' _external' Schlüsselwort arg verwenden wie 'url_for ('indoctrination', ..., _external = True)'. [docs] (http://flask.pooco.org/docs/0.12/api/#flask.url_for) – jonafato

+0

Gelöst es mit dem '_external = True' Danke Jungs. – freefly0313

+0

@jonafato Cool! Ich habe '_external' vorher noch nie benutzt, aber es sieht ziemlich nützlich aus! Nicht sicher, ob es immer wie erwartet funktionieren würde (zB wenn du Flask benutzt, um zwei verschiedene Hostnamen zu bedienen, '_external' benutzt' SERVER_NAME', was 'localhost' oder' 0.0.0.0' oder einer der Hostnamen oder so etwas ist und Sie möchten diese Anfrage möglicherweise an denselben Hostnamen senden, an dem die Anfrage bei dieser Route einging. In diesem Fall sollten Sie die 'base_url' von der Anfrage dem relativen' url_for'-Pfad voranstellen. @ freefly0313 Ich bin froh, dass es funktioniert hat! –