当前位置: 首页 > 面试题库 >

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

张子墨
2023-03-14
问题内容

我想将我的顶级域作为与我网站的不同部分相对应的各种子域的门户。example.com应该路由到welcome.html模板。eggs.example.com应该转到该网站的“蛋”小节或应用程序。我将如何在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已经对其进行了充分的记录)。



 类似资料:
  • 问题内容: 有没有办法在 Symfony2中 设置基于主机名的路由? 在官方文档中没有找到关于此主题的任何信息。 http://symfony.com/doc/2.0/book/routing.html 我想基于给定的主机名路由请求: 因此,从本质上讲,控制器将获得作为参数传递的当前子域。 我希望这是可能的,而我只是以某种方式错过了它。 提前致谢! 问题答案: 这是我的解决方案: 在内部应用程序目

  • 问题内容: 我想在每次执行Flask路由时执行一个异步函数。为什么函数从不执行? 我还尝试将阻塞调用放在单独的线程中。但是它仍然没有调用该函数。 问题答案: 你可以将一些异步功能整合到Flask应用中,而不必完全将其转换为异步。 这将阻止Flask响应,直到异步函数返回为止,但是它仍然允许你做一些聪明的事情。我已经使用此模式使用aiohttp并行执行许多外部请求,然后在完成它们之后,我回到传统的f

  • 现代Web框架使用路由技术来帮助用户记住应用程序URL。 无需从主页导航即可直接访问所需页面。 Flask中的装饰器用于将URL绑定到函数。 例如 - 这里,URL 规则绑定到函数。 因此,如果用户访问URL : ,就会调用函数,这个函数中的执行的结果输出将在浏览器中呈现。 应用程序对象的函数也可用于将URL与函数绑定,如上例所示,使用。

  • 本文向大家介绍Spring根据URL参数进行路由的方法详解,包括了Spring根据URL参数进行路由的方法详解的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要介绍了关于Spring根据URL参数进行路由的相关内容,分享出来供大家参考学习价值,下面来一起看看详细的介绍吧。 发现问题 最近在写接口的时候发现一个问题,就是两个REST接口的URL的path部分是一样的,根据query传入不同的参

  • 网页大意: domain.com:指向管理员和销售商的登录页面。 shop.domain.com:指向卖家的店铺。 计划使用react.Js作为前端,Nodejs(Express Js)作为后端。 还没有决定将所有内容都托管在Heroku上,或者只将Nodejs后端托管在Heroku上,而将React.js托管在其他地方,因为我们将开发过程分开。 如何根据URL访问(带或不带子域)将用户重定向到相

  • 问题内容: 我一直在尝试了解如何生成动态Flask URL。我已经阅读了文档和一些示例,但无法弄清楚为什么此代码不起作用: 我希望将index.html模板提供给,但事实并非如此。我收到一个构建错误。我想念什么? 如果我使用固定路径(如),则一切正常。 问题答案: 你已经拥有了很多东西。你需要做的就是使用语法(或适当的语法)修饰视图函数。 当Flask像你尝试使用的那样从动态路由的URL中提取变量