2013-04-08 25 views
10

Ich versuche, eine statische Datei mit Kolben dienen. Ich weiß nicht, wie man die Funktion url_for benutzt. Alle meine Routen Erzeugung dynamischer Inhalte arbeiten gut, ich habe importiert url_for, aber wenn ich habe diesen Code:Python Flasche - Serving statische Dateien

@app.route('/') 
def home(): 
    return url_for('static', filename='hi.html') 

Zusammen mit meiner ‚hi.html‘ Datei (die einige grundlegende html hat in it) sitzt in Verzeichnis statisch, was ich bekomme, wenn ich die Seite geladen ist wörtlich so:

/static/hi.html

Bin ich nur falsch mit url_for?

Antwort

16

url_for gibt genau die URL für diese Datei zurück. Es klingt, als ob Sie die URL für diese Datei in redirect möchten. Stattdessen senden Sie einfach den Text der URL als Antwort an den Client.

from flask import url_for, redirect 

@app.route('/') 
def home(): 
    return redirect(url_for('static', filename='hi.html')) 
+0

Natürlich. Ich bin ein Idiot. Du bist schlau. Vielen Dank. – user1276273

+11

Keine Idioten hier, nur Leute, die es noch nicht wissen. Der Ratschlag von sberry zur Bereitstellung von statischen Dateien ist ebenfalls angemessen. –

6

Sie erhalten die richtige Ausgabe für das, was Sie tun. url_for erzeugt die URL für die Argumente, die Sie es geben. In Ihrem Fall generieren Sie die URL für die hi.html Datei im Verzeichnis static. Wenn Sie möchten, die Datei tatsächlich ausgegeben, würden Sie wollen

from flask import render_template, url_for 

... 

    return render_template(url_for("static", filename="hi.html")) 

Aber an diesem Punkt, Ihr statisches Verzeichnis müßte unter dem Vorlagen-Verzeichnis gesucht (wo auch immer das so konfiguriert ist, zu leben).

Wenn Sie statische HTML-Dateien wie diese bereitstellen, dann wäre mein Vorschlag, sie außerhalb der Flaschen-Anwendung zu bedienen, indem Sie den Datenverkehr direkt von Ihrem Webserver an /static/.* leiten. Es gibt viele Beispiele im Internet, um dies mit nginx oder apache zu tun.

+0

Danke - Ich habe die Absicht, sie direkt von meinem Webserver zu bedienen, nur während ich mich entwickle, möchte ich ihnen in der Lage sein, sie mit Flaschen zu bedienen, und mehr als alles andere hat sie mich nur verrückt gemacht. – user1276273

Verwandte Themen