2011-09-22 12 views
10

Sto utilizzando lo flask-appengine-template di kamalgill come punto di partenza per creare il mio sito personale. Tuttavia, voglio avere il mio dominio di primo livello come portale per vari sottodomini che corrispondono a diverse sezioni (applicazioni?) Del mio sito.Percorso sottodominio pallone?

Ad esempio, www.spam.com deve indirizzare a un modello welcome.html. Tuttavia, eggs.spam.com dovrebbe indirizzare a una sottosezione "uova" o applicazione del sito. Come potrei ottenere questo in fiasco?

risposta

25

seconda della complessità vostro sito sarà o è possibile aggiungere i sottodomini via si URL registration:

from flask import Flask 

app = Flask(__name__) 

@app.route("/") 
def index(): 
    return "This is the index" 

@app.route("/", subdomain="eggs") 
def egg_index(): 
    return "You have eggs" 

Oppure utilizzare il modulo di Flask Blueprint (api docs here).

In eggs.py:

eggs = Blueprint("eggs", __name__, subdomain="eggs") 

# Then you can register URLs here 
@eggs.route("/") 
def index(): 
    "You have eggs" 

Poi, nel vostro routes.py principale:

from eggs import eggs 
from flask import Flask 

app = Flask(__name__) 

app.register_blueprint(eggs) 

@app.route("/") 
def index(): 
    return "This is the index" 

Ricordate, tutte le rotte Flask sono in realtà casi di werkzeug.routing.Rule. La consulenza Werkzeug's documentation for Rule ti mostrerà un bel po 'di cose che le rotte possono fare su cui la documentazione di Flask sorvola (poiché è già ben documentata da Werkzeug).

+9

Ricordarsi di aggiungere SERVER_NAME in config per abilitare il supporto per sottodomini http://flask.pocoo.org/docs/config/ –

+2

+1 per le uova –

+3

@Sean è possibile aggiungere la nota di Desmond alla risposta. Ero perso per ore prima di trovare quella soluzione. 'app.config ['SERVER_NAME'] = 'example.com: 5000'' – cbron