flask中的蓝图与子域名实现
Posted wyb666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask中的蓝图与子域名实现相关的知识,希望对你有一定的参考价值。
内容:
1.flask中的蓝图
2.flask子域名实现
1.flask中的蓝图
一个大型项目中视图比较多,如果仅仅是写在app.py
中不方便管理,蓝图就可以做到分功能分目录结构
(1)什么是蓝图
蓝图:用于实现单个应用的视图、模板、静态文件的集合。
蓝图就是模块化处理的类
简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。
(2)蓝图的运行机制
蓝图是保存了一组将来可以在应用对象上执行的操作。
注册路由就是一种操作,当在程序实例上调用route装饰器注册路由时,这个操作将修改对象的url_map路由映射列表。当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项。
当执行应用对象的 register_blueprint() 方法时,应用对象从蓝图对象的 defered_functions 列表中取出每一项,即调用应用对象的 add_url_rule() 方法,这将会修改程序实例的路由映射列表
(3)蓝图实际使用
2.flask子域名实现
(1)什么是子域名
子域名类似xxx.douban.com的形式,比如book.douban.com、movie.douban.com、music.douban.com、time.douban.com
(2)flask子域名实现
1 # __author__ = "wyb" 2 # date: 2018/8/31 3 4 from flask import Flask 5 6 app = Flask(import_name=__name__) 7 app.config[‘SERVER_NAME‘] = ‘wyb666.com:80‘ 8 9 10 # 子域名 -> xxx.wyb666.com 11 # 静态子域名 -> xxx是固定的 12 # subdomain指定子域名 13 @app.route("/", subdomain="admin") 14 def static_index(): 15 """ 16 Flask supports static subdomains 17 This is available at static.your-domain.tld 18 """ 19 return "static.your-domain.tld" 20 21 22 # 动态子域名 -> xxx不是固定的 23 # subdomain指定子域名(下面的<username>类似正则表达式) 24 @app.route("/dynamic", subdomain="<username>") 25 def username_index(username): 26 """ 27 Dynamic subdomains are also supported 28 Try going to username.your-domain.tld/dynamic 29 """ 30 return username + ".your-domain.tld" 31 32 33 if __name__ == ‘__main__‘: 34 app.run()
(3)本地如何测试
上述程序运行后在浏览器中输入admin.wyb666.com将出现如下画面:
这是由于DNS解析的原因,DNS解析可以大致理解为访问一个网站,输入网址后将解析成IP地址访问 (域名->IP地址)
本地flask程序运行的IP是127.0.0.1,这里并没有对应关系,在Windows中可以通过修改host来实现添加或改变这个对应关系
在本地运行,本地访问时要修改host文件,将上述的子域名与127.0.0.1对应:
1 127.0.0.1 www.wyb666.com 2 127.0.0.1 admin.wyb666.com 3 127.0.0.1 wyb.wyb666.com 4 、、、
然后运行程序再访问就可以了:
以上是关于flask中的蓝图与子域名实现的主要内容,如果未能解决你的问题,请参考以下文章