Flask子热门ag视讯平台|官方及通配符子域 - digwtx's Blog

Flask子热门ag视讯平台|官方及通配符子域

digwtx posted @ 2014年12月22日 10:17 in 未分类 with tags subdomain flask , 2818 阅读

之前的文章中,我们讲到Flask中的SERVER_NAME主要做两件事:

  1. 协助Flask生成请求上下文之外的URL(比如邮件)
  2. 用于子热门ag视讯平台|官方支持

今天我们就来讲讲子热门ag视讯平台|官方这部分。

Flask子热门ag视讯平台|官方

一般用于数量比较少的子热门ag视讯平台|官方,一个模块对应一个子热门ag视讯平台|官方。先看下面一个例子:

modules.py:

from flask import Blueprint

public = Blueprint('public', __name__)

@public.route('/')
def home():
    return 'hello flask'

app.py:

app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
from modules import public
app.register_blueprint(public, subdomain='public')

现在可以通过public.example.com/来访问public模块了。

通配符子域

通配符子域,即通过一个模块来匹配很多个子热门ag视讯平台|官方。比如某些网站提供的个性化热门ag视讯平台|官方功能,就是这种形式。

先来看段示例代码:

modules.py:

from flask import Blueprint

member = Blueprint('member', __name__)

@member.route('/')
def home():
    return g.subdomain

app.py:

app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
from modules import member
app.register_blueprint(member, subdomain='')

这段代码和上一节的第像,不同之处是这里的subdomain使用了动态参数(路由中的URL变量也是这种方式)。我们可以用这个参数在请求回调函数之前利用的组合的url处理器来获取相关的用户。这样我们就可以通过*.example.com的形式来访问member模块了。

下面是为任何FlaskBlueprint对象增加子热门ag视讯平台|官方支持的便捷函数:

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.subdomain

def add_subdomain_support(app):
    app.url_value_preprocessor(add_subdomain_to_global)
    app.url_defaults(add_subdomain_to_url_params)

然后你可以使用before_request回调函数来处理子热门ag视讯平台|官方:

add_subdomain_support(blueprint)

@blueprint.before_request
def add_user_to_global():
    g.user = None
    if g.subdomain:
        g.user = User.query.filter_by(username=g.subdomain).first_or_404()

注:这里的blueprint请改为实际对象。

特别说明:通配符子域调试不是不太方便,需要做泛热门ag视讯平台|官方解析才可以。修改hosts文件来指定热门ag视讯平台|官方的方法是不可行的(子热门ag视讯平台|官方较少时可以逐个添加,子热门ag视讯平台|官方多了就不太现实了)。本机调试时,可以安装DNS服务器(比如LINUX BIND服务等),并做好泛热门ag视讯平台|官方解析,然后再进行调试。当然使用公网热门ag视讯平台|官方和服务器来调试也未尝不可。

英文好的同学可以参阅:Getting bigger with Flask

本文链接:?http://flask123.sinaapp.com/article/45/?
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

Avatar_small
mobile price in bd 说:
2018年10月18日 18:33

really impress your writing system

Avatar_small
nokia mobile price i 说:
2018年10月18日 18:36

I invite my friend for program language teach

Avatar_small
menardsclub 说:
2019年4月12日 12:26

TM Menards | Register, Login and Access TM Menards Account I found this blog very informative and interesting. Will look forward to more such posts Menards Club


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter