web-dev-qa-db-ja.com

Webアプリでの動的サブドメイン処理(Flask)

flaskを使用してWebアプリケーションを作成します。アプリケーションの一部には、サブドメイン(user1.appname.orgなど)が含まれます。

flask構成でこれらのサブドメインを動的に作成する方法、またはそれらを運用サーバーにデプロイする方法がわかりません。

これを行うための最良の方法は何ですか?

27
Bruce Collie

すべてのFlaskのルーティング構造は subdomain キーワード引数をサポートします(これにはルート変数のサポートが含まれます)。

@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"
41
Sean Vieira

Sean Vieraの投稿を補完するには、SERVER_NAME構成変数も設定する必要があります。

ドキュメント: http://flask.pocoo.org/docs/config/#SERVER_NAME

サーバーの名前とポート番号。サブドメインのサポートに必要です(例: 'myapp.dev:5000')localhostはサブドメインをサポートしていないため、これを「localhost」に設定しても効果がないことに注意してください。デフォルトでもSERVER_NAMEを設定すると、リクエストコンテキストなしで、アプリケーションコンテキスト付きのURL生成が有効になります。

ローカルでテストするには、次のようにhostsファイルにエントリを追加する必要があります。

127.0.0.1       cvshark.local
127.0.0.1       robert.cvshark.local
127.0.0.1       www.cvshark.local
43
Robert Massa