时间:2021-05-23
Flask子域名
一般用于数量比较少的子域名,一个模块对应一个子域名。先看下面一个例子:
modules.py:
from flask import Blueprintpublic = Blueprint('public', __name__)@public.route('/')def home(): return 'hello flask'app.py:app = Flask(__name__)app.config['SERVER_NAME'] = 'example.com'from modules import publicapp.register_blueprint(public, subdomain='public')现在可以通过public.example.com/来访问public模块了。
通配符子域
通配符子域,即通过一个模块来匹配很多个子域名。比如某些网站提供的个性化域名功能,就是这种形式。
先来看段示例代码:
modules.py:
from flask import Blueprintmember = Blueprint('member', __name__)@member.route('/')def home(): return g.subdomainapp.py:app = Flask(__name__)app.config['SERVER_NAME'] = 'example.com'from modules import memberapp.register_blueprint(member, subdomain='<subdomain>')这段代码和上一节的第像,不同之处是这里的subdomain使用了动态参数<subdomain>(路由中的URL变量也是这种方式)。我们可以用这个参数在请求回调函数之前利用的组合的url处理器来获取相关的用户。这样我们就可以通过*.example.com的形式来访问member模块了。
下面是为任何Flask或Blueprint对象增加子域名支持的便捷函数:
def add_subdomain_to_global(endpoint, values): g.subdomain = values.pop('subdomain', None)def add_subdomain_to_url_params(endpoint, values): if not 'subdomain' in values: values['subdomain'] = g.subdomaindef add_subdomain_support(app): app.url_value_preprocessor(add_subdomain_to_global) app.url_defaults(add_subdomain_to_url_params)然后你可以使用before_request回调函数来处理子域名:
add_subdomain_support(blueprint)@blueprint.before_requestdef add_user_to_global(): g.user = None if g.subdomain: g.user = User.query.filter_by(username=g.subdomain).first_or_404()注:这里的blueprint请改为实际对象。
特别说明:通配符子域调试不是不太方便,需要做泛域名解析才可以。修改hosts文件来指定域名的方法是不可行的(子域名较少时可以逐个添加,子域名多了就不太现实了)。本机调试时,可以安装DNS服务器(比如LINUX BIND服务等),并做好泛域名解析,然后再进行调试。当然使用公网域名和服务器来调试也未尝不可。
PS:
1.如果某个blueprint默认就需要实用a.domain.com,那么在定义blueprint时候:
这样,该bp下面的所有url routing走的都是a.domain.com/xxx
2.在某个具体的url routing定义时,如果需要实用a.domain.com,那么这么写:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python中Flask框架的简单用法。分享给大家供大家参考。具体如下:使用Flask框架的简单入门范例代码,如果你正学习Flask框架,可以参考
本文实例讲述了Python使用Flask框架获取当前查询参数的方法。分享给大家供大家参考。具体如下:这段代码实现Python的Flask框架下获取当前查询参数,
有些框架本身就支持多配置文件,例如RubyOnRails,nodejs下的expressjs。python下的Flask虽然本身支持配置文件管理,但单纯使用fr
引言:Flask是Python社区非常流行的一个Web开发框架,本文将尝试将介绍APScheduler应用于Flask之中。1.Flask介绍Flask是Pyt
Flask框架难学吗?它和Django哪个更容易一些,这可能是学Pythonweb开发的同学经常问的问题,下面来说一下flask框架。Flask是python的