Web应用程序中的动态子域处理(Flask)

Bru*_*lie 27 python subdomain wildcard-subdomain flask web

我将使用flask来创建一个Web应用程序,部分应用程序将涉及一个子域(例如,user1.appname.org).

我不确定如何在烧瓶配置中动态创建这些子域,或者如何将它们部署到生产服务器.

这样做的最佳方式是什么?

Sea*_*ira 44

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"
Run Code Online (Sandbox Code Playgroud)

  • 这项工作是否会在Flask测试localhost服务器上运行? (2认同)
  • 我也想知道是否有办法在本地进行测试.我已经尝试将多个条目添加到我的hosts文件中.这似乎不起作用. (2认同)

Rob*_*ssa 44

要补充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
Run Code Online (Sandbox Code Playgroud)

  • 这是更好的答案;它超越了文档并解决了更棘手的问题。 (2认同)
  • 但是可以将DYNAMIC条目添加到主机文件吗? (2认同)