您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

根据子网域进行路由的Flask应用

根据子网域进行路由的Flask应用

@app.route()接受subdomain参数以指定路由要匹配的子域。Blueprint还接受一个subdomain参数来为蓝图中的所有路由设置子域匹配。

您必须设置app.config['SERVER_NAME']为基本域,以便Flask知道要匹配的内容。除非您的应用程序在端口80或443上运行(即在生产中),否则您还需要指定端口。

从Flask 1.0开始subdomain_matching=True,创建应用程序对象时还必须进行设置。

from flask import Flask

app = Flask(__name__, subdomain_matching=True)
app.config['SERVER_NAME'] = "example.com:5000"

@app.route("/")
def index():
    return "example.com"

@app.route("/", subdomain="eggs")
def egg_index():
    return "eggs.example.com"



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

@ham.route("/")
def index():
    return "ham.example.com"

app.register_blueprint(ham)

在本地运行时,您需要编辑计算机的主机文件/etc/hosts在Unix上),以便它知道如何路由子域,因为这些域实际上并不存在于本地。

127.0.0.1 localhost example.com eggs.example.com ham.example.com

记得还是在指定浏览器中的端口,http://example.com:5000http://eggs.example.com:5000,等。

同样,在部署到生产环境时,您需要配置DNS,以使子域与基本名称路由到同一主机,并配置Web服务器将所有这些名称路由到应用程序。

请记住,所有Flask路线实际上都是的实例werkzeug.routing.Rule。查阅Werkzeug的文档Rule将向您展示Flask的文档掩盖了路由可以做的很多事情(因为Werkzeug已经对其进行了充分的记录)。

Python 2022/1/1 18:32:39 有208人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶