2011-09-22 12 views
10

Estoy usando kamalgill's flask-appengine-template como punto de partida para crear mi sitio personal. Sin embargo, quiero tener mi dominio de nivel superior como portal para varios subdominios que corresponden a diferentes secciones (¿aplicaciones?) De mi sitio.Enrutamiento del subdominio del matraz?

Por ejemplo, www.spam.com debe enrutar a una plantilla welcome.html. Sin embargo, eggs.spam.com debe enrutar a una subsección o aplicación del sitio "huevos". ¿Cómo lograría esto en un matraz?

Respuesta

25

Dependiendo de la complejidad de su sitio será usted puede añadir sus subdominios a través de usted 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" 

O bien utilizar Blueprint módulo del frasco (api docs here).

En eggs.py:

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

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

Luego, en su routes.py principal:

from eggs import eggs 
from flask import Flask 

app = Flask(__name__) 

app.register_blueprint(eggs) 

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

Recuerde, son todas las rutas Frasco realmente casos de werkzeug.routing.Rule. Consultar Werkzeug's documentation for Rule le mostrará algunas cosas que las rutas pueden hacer que la documentación de Flask pasa por alto (ya que Werkzeug ya está bien documentado).

+9

Recuerde agregar SERVER_NAME en la configuración del matraz para habilitar el soporte del subdominio http://flask.pocoo.org/docs/config/ –

+2

+1 para los huevos –

+3

@Sean puede agregar la nota de Desmond a su respuesta. Estuve perdido por horas antes de encontrar esa solución. 'app.config ['SERVER_NAME'] = 'ejemplo.com: 5000'' – cbron

Cuestiones relacionadas