2012-06-13 13 views
21

Zamierzam użyć kolby do utworzenia aplikacji internetowej, a część aplikacji obejmie poddomeny (na przykład użytkownik1.aplikacja_aplikacji.org).Obsługa dynamicznej subdomeny w aplikacji sieciowej (kolba)

Nie wiem, jak utworzyć dynamicznie te subdomeny w konfiguracji skrzynki lub jak rozmieścić je na serwerze produkcyjnym.

Jaki jest najlepszy sposób na zrobienie tego?

Odpowiedz

34

Wszystkie konstrukcje routingu Flask obsługują argument słowa kluczowego subdomain (obejmuje to obsługę zmiennych trasy).

@app.route("/", subdomain="static") 
def static_index(): 
    """Flask supports static subdomains 
    This is available at static.your-domain.tld""" 
    return "static.your-domain.tld" 

@app.route("/dynamic", subdomain="<username>") 
def username_index(username): 
    """Dynamic subdomains are also supported 
    Try going to user1.your-domain.tld/dynamic""" 
    return username + ".your-domain.tld" 
+1

Będzie to działać uruchomiony na serwerze badania localhost Kolby? –

+1

Zastanawiam się również, czy istnieje sposób na sprawdzenie tego lokalnie. Próbowałem dodać kilka wpisów do mojego pliku hosts., Wydaje się, że to nie działa. –

+0

@sean W jaki sposób zrobisz coś podobnego w niestandardowych domenach. Użytkownik rejestruje się pod domeną subdomena.example.com, a następnie dodaje domenę niestandardową, taką jak www.mygreatsite.com? Jak obsłużyć dostęp do tej niestandardowej domeny w trasie Flask? – Raj

38

Aby uzupełnić wpis Seana Viery, należy również ustawić zmienną konfiguracyjną SERVER_NAME.

Dokumentacja z http://flask.pocoo.org/docs/config/

Nazwa i numer portu serwera. Wymagane dla obsługi poddomeny (np .: "myapp.dev:5000") Należy pamiętać, że localhost nie obsługuje subdomen , więc ustawienie tego na "localhost" nie pomaga. Ustawienie domyślnie SERVER_NAME umożliwia także generowanie adresu URL bez kontekstu żądania, ale z kontekstem aplikacji.

Aby przetestować lokalnie trzeba dodawać wpisy do pliku hosts, tak:

127.0.0.1  cvshark.local 
127.0.0.1  robert.cvshark.local 
127.0.0.1  www.cvshark.local 
+0

Nie rozumiem przykładu, który podają: "myapp.dev: 5000". Czy mojaapp jest subdomeną i czy dev hostname? – compie

+0

@compie Tak, zgadza się. –

+1

To jest lepsza odpowiedź; wykracza poza dokumentację i rozwiązuje trudniejsze sprawy. – gwg

Powiązane problemy