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 、、、

然后运行程序再访问就可以了:

原文地址:https://www.cnblogs.com/wyb666/p/9568197.html

时间: 2024-10-30 06:29:52

flask中的蓝图与子域名实现的相关文章

Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将 查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做

Flask初识,第九篇,Flask中的蓝图

蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将 查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做

Flask中的蓝图(BluePrint)、

蓝图 1.初识Flask蓝图(BluePrint) 创建一个项目然后将目录结构做成: user.py中的内容 from flask import Blueprint, render_template # 导入Flask中的蓝图BluePrint模块 # 实例化一个蓝图对象 users_blue = Blueprint('users', __name__, template_folder='user_temp', url_prefix='/user') # 这里添加路由和视图函数的时候与在Flas

Flask中的蓝图

一.前言 蓝图,听起来高大上的一匹,在Flask中的蓝图 blueprint 也是一个非常高大上的东西,它的作用就是将功能与主服务分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将:查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做一个这样

JSFinder:一个在js文件中提取URL和子域名的脚本

JSFinder介绍 JSFinder是一款用作快速在网站的js文件中提取URL,子域名的脚本工具. 支持用法 简单爬取 深度爬取 批量指定URL/指定JS 其他参数 以往我们子域名多数使用爆破或DNS中获得,这个脚本从JS文件中匹配出子域也算是添砖加瓦. 简单爬取示例 子域名清单 https://github.com/Threezh1/JSFinder 点个赞 (0) 原文地址:https://www.cnblogs.com/nul1/p/11140910.html

Flask 中的蓝图(BluePrint)

目录 1.Flask蓝图概述 2.一个简单的蓝图实现 2.1 实例一: 2.2 实例二: 3.蓝图实现学生信息的增删改查 3.1学生信息查看: 3.2学生信息更新: 3.3学生信息增加: 3.4管理学生信息的主服务器: 3.5管理学生信息的web视图: 1.Flask蓝图概述 作用就是将功能与主服务分开,蓝图没有run方法 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_u

JSFinder 一个从JS文件中获取url和子域名的工具

关于 JSFinder JSFinder is a tool for quickly extracting URLs and subdomains from JS files on a website. JSFinder是一款用作快速在网站的js文件中提取URL,子域名的工具. 提取URL的正则部分使用的是LinkFinder By : Threezh1 Blog: https://threezh1.github.io/ https://threezh1.com/2019/06/10/JSFin

flask中的蓝图 Blueprint

模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求. Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性: 一个应用可以具有多个Blueprint 可以将一个Blu

网站后端_Python+Flask.0012.FLASK域名相关之域名与动态子域名实现?

域名设置: 说明: SERVER_NAME内置属性的设置会影响全局URL,它主要有两个作用,第一个作用是在请求上下文之外生成绝对URL,当然如果设置也会影响请求上下文内的绝对URL,第二个作用是用于子域名的支持 #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # "