【问题标题】:Subdomains with Flask?带有 Flask 的子域?
【发布时间】:2014-02-18 18:25:05
【问题描述】:

如何使用 Flask 为我的网站实施子域?

文档虽然非常好,但对这一点并不十分清楚。 子域不必是动态的,我只会使用我自己选择的 2 或 3 个。

我将如何路由它们?是否可以以正常方式对其进行测试? (由 Flask 在本地提供)

【问题讨论】:

  • Flask 不太关心主机名;它的域是跟随主机名的路径;您需要对每个主机名做什么?
  • 只有几个子域,如 blog.mywebsite.com 等。这就是我感到困惑的原因,因为当您为应用程序设置路由时,您只需在域名后指定路径。
  • 这取决于您如何设置 WSGI 服务器来处理某些域名。例如,Apache 中的虚拟服务器。
  • 我还是迷路了,这就是我在看的 - flask.pocoo.org/docs/patterns/appdispatch,但对于我想要实现的东西来说,它似乎过于复杂
  • @user3233758:请意识到不同的人对“实现子域”的含义有不同的想法。一方面,您可能有多个子域都指向不同的 Flask 应用程序。在另一种情况下,多个子域指向单个 Flask 应用程序,并且该 Flask 应用程序根据请求发送到的域执行不同的操作。您能否更具体地告诉我们您想做什么?

标签: python web flask


【解决方案1】:

如果您只想处理特定子域下的特定端点,您可以将use the subdomain 参数传递给@route

app = Flask(__name__)
# In Flask 1.0
# app = Flask(__name__, subdomain_matching=True)

# Must add this until Flask 1.0
# Must be host:port pair or will not work
app.config["SERVER_NAME"] = "local.dev:5000"

@app.route("/")
def home():
    return "Sweet home"

@app.route("/some-route")
def some_route():
    return "on the default subdomain (generally, www, or unguarded)"

@app.route("/", subdomain="blog")
def blog_home():
    return "Sweet blog"

@app.route("/<page>", subdomain="blog")
def blog_page(page):
    return "can be dynamic: {}".format(page)

要在本地处理开发,您需要在 hosts 文件中创建条目以将这些不同的域指向您的计算机:

local.dev    127.0.0.1
blog.local.dev    127.0.0.1

那么您可以使用local.devblog.local.dev 而不是localhost 来查看您的工作。

【讨论】:

  • 这在我的电脑上不起作用。 local.dev 和 blog.local.dev 都返回“甜蜜的家”??!!
  • @AliKhosro - 我遗漏了一个关键细节(设置SERVER_NAME)。现在已经修复,它应该可以工作了。
  • 如何使用基于类的视图来做到这一点?
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2021-02-25
  • 2015-01-19
  • 1970-01-01
  • 2020-02-20
  • 2011-03-06
  • 2016-10-19
相关资源
最近更新 更多