在烧瓶中,我知道它可以使用子域,但我想在同一路由中设置一些不同的子域。 有没有办法可以像在URL路由中一样使用子域中的正则表达式?比如:
@app.route('/', subdomain='<regex("www|test"):subdomain>')
def example(subdomain):
return "{}".format(subdomain)
if __name__ == '__main__':
app.run(debug=True)
但是有一个新问题,如果我不想要这样的论点,我该怎么办?
@app.route('/', subdomain='<regex("www|test"):subdomain>')
def example():
return "test"
if __name__ == '__main__':
app.run(debug=True)
答案 0 :(得分:0)
我发现werkzeug使用相同的方法来解析here中的domain_url和URL路径!
所以我可以通过这个来实现它:
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
class Config(object):
DEBUG = False
TESTING = False
SQLALCHEMY_TRACK_MODIFICATIONS = True
class DevelopmentConfig(Config):
DEBUG = True
SERVER_NAME = 'local.dev:9090'
class RegexConverter(BaseConverter):
def __init__(self, url_map, *items):
super(RegexConverter, self).__init__(url_map)
self.regex = items[0]
app.url_map.converters['regex'] = RegexConverter
app.config.from_object(DevelopmentConfig)
@app.route('/', subdomain='<regex("www|test"):subdomain>')
def example(subdomain):
return "{}".format(subdomain)
if __name__ == '__main__':
app.run(debug=True)
如果您想在本地测试,可以编辑您的主机,如:
127.0.0.1 www.local.dev
127.0.0.1 local.dev
127.0.0.1 test.local.dev