美文网首页
蓝图和子域名

蓝图和子域名

作者: 97833632c0c7 | 来源:发表于2018-05-27 13:26 被阅读0次

from flask import Blueprint

bp = Blueprint('user',__name__,url_prefix='/user/')

@bp.route('/')

def index():

    return "用户首页"

@bp.route('profile/')

def profile():

    return "个人简介"

然后我们在主程序中,通过app.register_blueprint()方法将这个蓝图注册进url映射中,看下主app的实现:

fromflaskimportFlask

import user

app = Flask(__name__)

app.register_blueprint(user.bp)

if__name__ =='__main__': 

 app.run(host='0.0.0.0',port=9000)

以后访问/user/,/user/profile/,都是执行的user.py文件中的视图函数,这样就实现了项目的模块化。

寻找静态文件:

bp = Blueprint('admin',__name__,url_prefix='/admin',static_folder='static')

static_folder可以是相对路径(相对蓝图文件所在的目录),也可以是绝对路径。在配置完蓝图后,还有一个需要注意的地方是如何在模板中引用静态文件。在模板中引用蓝图,应该要使用蓝图名+.+static来引用,如下所示:

url_for生成url:

url_for('admin.index')

子域名:

子域名在许多网站中都用到了,比如一个网站叫做xxx.com,那么我们可以定义一个子域名cms.xxx.com来作为cms管理系统的网址,子域名的实现一般也是通过蓝图来实现,在之前章节中,我们创建蓝图的时候添加了一个url_prefix=/user作为url前缀,那样我们就可以通过/user/来访问user下的url。但使用子域名则不需要。另外,还需要配置SERVER_NAME,比如app.config[SERVER_NAME]='example.com:9000'。并且在注册蓝图的时候,还需要添加一个subdomain的参数,这个参数就是子域名的名称,先来看一下蓝图的实现(admin.py):

from flask import Blueprint

bp = Blueprint('admin',__name__,subdomain='admin')

@bp.route('/')

def admin():

    return'Admin Page'

接下来看主app的实现:

from flask import Flask

import admin

# 配置`SERVER_NAME`

app.config['SERVER_NAME'] ='example.com:8000'

# 注册蓝图,指定了

subdomainapp.register_blueprint(admin.bp)

if__name__ =='__main__': 

     app.run(host='0.0.0.0',port=8000,debug=True)

写完以上两个文件后,还是不能正常的访问admin.example.com:8000这个子域名,因为我们没有在host文件中添加域名解析,你可以在最后添加一行127.0.0.1 admin.example.com,就可以访问到了。另外,子域名不能在127.0.0.1上出现,也不能在localhost上出现。

相关文章

网友评论

      本文标题:蓝图和子域名

      本文链接:https://www.haomeiwen.com/subject/ofmmjftx.html