杭州网站建设官方蓝韵网络,上海手机网站建设价格,推广网站怎么做模版,wordpress如何分类栏蓝图为什么要使用蓝图模块化组织#xff1a;将应用分解为可重用的模块#xff08;组件#xff09;。每个蓝图封装了相关的视图、静态文件、模板等。按功能划分#xff1a;将大型应用按功能模块划分#xff08;例如#xff1a;用户认证、博客、管理后台#xff09;#…蓝图为什么要使用蓝图模块化组织将应用分解为可重用的模块组件。每个蓝图封装了相关的视图、静态文件、模板等。按功能划分将大型应用按功能模块划分例如用户认证、博客、管理后台每个功能一个蓝图。路由分组将相关联的路由组合在一起形成逻辑单元避免所有路由都堆积在主应用文件中。动态注册蓝图可以先定义后注册在应用初始化时再注册到应用实例上适合工厂模式。代码复用同一个蓝图可以在多个Flask应用中使用实现代码复用。URL前缀管理注册蓝图时可设置统一URL前缀如所有用户相关路由都以/user开头。独立模板/静态文件每个蓝图可以有自己的模板目录和静态文件目录。中间件作用域蓝图可以有自己的请求钩子before_request, after_request等只对自身注册的路由生效。解决视图命名冲突不同蓝图可以有相同命名的视图函数通过蓝图名.函数名区分。开始使用基础项目结构
simple_flask_app/
├── app.py # 主应用文件
├── blueprints/
│ ├── main.py # 主蓝图
│ └── user.py # 用户蓝图
├── templates/ # 模板文件
│ ├── home.html # 主蓝图页面
│ └── users.html # 用户页面创建app.py文件作为项目主入口文件
from flask import Flask
from blueprints.main import main_bp
from blueprints.user import user_bp
# 创建Flask应用
app Flask(__name__)
# 注册蓝图
app.register_blueprint(main_bp, url_prefix/) # 主蓝图使用根路径
app.register_blueprint(user_bp, url_prefix/users) # 用户蓝图使用/users前缀
# 运行应用
if __name__ __main__:app.run(debugTrue, port5000)创建蓝图在blueprints文件夹中创建main.py和user.py文件用于不同模块的蓝图路由main.py
from flask import Blueprint, render_template
# 创建主蓝图
第一个参数main (蓝图名称)这是蓝图的标识名必须是唯一的字符串用于在应用中识别这个特定的蓝图在 url_for() 函数中引用该蓝图的端点在应用的其他部分访问这个蓝图main_bp Blueprint(main, __name__)
# 主蓝图的路由
main_bp.route(/)
def home():return render_template(home.html)
main_bp.route(/about)
def about():return h1关于我们/h1p这是关于我们的页面/p
main_bp.route(/contact)
def contact():return h1联系我们/h1p电话: 123-456-7890/p
user.py
from flask import Blueprint, render_template
# 创建用户蓝图
user_bp Blueprint(user, __name__)
# 用户蓝图的路由
user_bp.route(/)
def user_home():return render_template(users.html)
user_bp.route(/profile)
def profile():return h1用户资料/h1p这是用户的个人资料页面/p
user_bp.route(/dashboard)
def dashboard():return h1控制面板/h1p用户控制面板内容/p创建视图页面在templates中创建home.html文件用于主蓝图的显示和跳转效果的演示下述代码中{{user.xxx}}或者{{main.xxx}}前缀名称是在创建蓝图的时候设置的main_bp Blueprint(main, __name__)home.html页面
!DOCTYPE html
html
headtitle首页/titlestylebody {font-family: Arial, sans-serif;margin: 40px;}nav {background: #f0f0f0;padding: 10px;margin-bottom: 20px;}nav a {margin-right: 15px;text-decoration: none;color: #333;}/style
/head
bodynava href{{ url_for(main.home) }}首页/aa href{{ url_for(main.about) }}关于/aa href{{ url_for(main.contact) }}联系/aa href{{ url_for(user.user_home) }}用户主页/aa href{{ url_for(user.profile) }}用户资料/a/nav
h1欢迎来到主页/h1p这是一个使用 Flask 蓝图的简单示例。/p
h2项目结构/h2ulli主蓝图处理网站主要页面/lili用户蓝图处理所有用户相关页面/lili蓝图使用URL前缀进行分组/li/ul
/body
/htmlusers.html页面
!DOCTYPE html
html
headtitle用户主页/titlestylebody {font-family: Arial, sans-serif;margin: 40px;}nav {background: #e0f7fa;padding: 10px;margin-bottom: 20px;}nav a {margin-right: 15px;text-decoration: none;color: #00796b;}.user-section {border-left: 4px solid #00796b;padding-left: 15px;margin-top: 20px;}/style
/head
bodynava href{{ url_for(main.home) }}返回首页/aa href{{ url_for(user.user_home) }}用户主页/aa href{{ url_for(user.profile) }}用户资料/aa href{{ url_for(user.dashboard) }}控制面板/a/nav
h1用户主页/h1p这是用户蓝图的首页。/p
div classuser-sectionh2用户蓝图功能/h2p所有用户相关的功能都在此蓝图中实现/pulli用户资料管理/lili控制面板/lili用户设置待添加/li/ul/div
/body
/html