博客
关于我
Flask视图进阶
阅读量:642 次
发布时间:2019-03-14

本文共 2296 字,大约阅读时间需要 7 分钟。

Flask框架——路由与视图函数

Flask框架提供了一套灵活的路由管理系统,允许开发者轻松定义和管理Web应用的URL与视图函数的映射关系。本文将深入探讨Flask中常用的路由配置方法,包括add_url_rule、类视图、蓝图配置以及高级路由功能。


1. add_url_rule 元_>>

add_url_rule 是Flask中用于手动添加路由规则的核心方法。它允许开发者将指定的URL路径映射到特定的视图函数(view_func)。在使用该方法时,若未指定端点名称(endpoint),则默认使用视图函数的名称作为端点。以下是add_url_rule的典型使用示例:

@app.add_url_rule('/list/', endpoint='test', view_func=my_list)def my_list():    return '我是列表页'

调用url_for('test')时,Flask将根据映射返回对应的URL。


2. 类视图 >

类视图在Flask中是一种与Django类似的高级视图类型,通常用于复杂的CRUD操作或动态路由管理。类视图需继承自flask.views.View,并实现dispatch_request方法。以下是标准类视图的实现示例:

class Test(views.View):    def __init__(self):        self.context = {            'name': 'tian',            'age': 18,            'hobby': '抽烟,喝酒,烫头'        }    def dispatch_request(self):        return render_template('test.html', **self.context)

通过app.add_url_rule将类视图注册路由:

app.add_url_rule('/test/', view_func=Test.as_view('test'))

类视图还支持基于HTTP方法的动态路由定义。例如:

class LoginView(views.MethodView):    def __render__(self, error=None):        return render_template('login.html', error=error)    def get(self):        return self.__render__()    def post(self):        # 处理登录逻辑        username = request.form.get('username')        password = request.form.get('password')        # ...        return '登录成功' if 验证成功 else self.__render__(error='用户名或密码错误')

3. 蓝图配置 >

蓝图(Blueprint)是一种将Flask应用的功能模块化的强大工具。通过蓝图,可以将相同功能模块的视图聚合到一个文件中,提升项目结构的清晰度。以下是典型的蓝图使用示例:

from flask import Blueprintuser_bp = Blueprint('user', __name__, url_prefix='/user')@user_bp.route('/profile/')def profile():    return '个人中心页面'# 注册蓝图到应用app.register_blueprint(user_bp)

蓝图的模板与静态文件 >

  • 模板文件优先查找路径:template_folder 可指定自定义目录。
  • 静态文件查找遵循顺序:模板文件中优先查找static文件夹。

示例 >

news_bp = Blueprint(    'news',    __name__,    url_prefix='/news',    template_folder='user_template')

4. url_for 反转蓝图 >

url_for 是Flask提供的反转路由工具,可生成 Territories Trainer: 完美的数字野战群体生成器 生成的URL路径。使用前需指定蓝图名称,如以下案例中的user.list

print(url_for('user.list'))

此处的user.list表示使用user蓝图下的list端点。


5. 蓝图实现子域名 >

通过配置蓝图的subdomain参数,可为子域名赋值。完整步骤如下:

  • 设置SERVER_NAME
  • app.config['SERVER_NAME'] = 'baidu.com:5000'
    1. 修改hosts 文件:
    2. 127.0.0.1   baidu.com
      1. 注册子域名蓝图:
      2. cms_bp = Blueprint(    'cms',    __name__,    subdomain='wenku')

        此配置下,wenku.baidu.com 将映射至cms蓝图下的URL路由。


        以上内容详细介绍了Flask框架的核心路由与视图配置方法,涵盖了从简单路由到复杂蓝图配置再到高级功能(如子域名)的应用场景。通过合理搭配这些功能,开发者能够构建高效、灵活的Web应用框架。

    转载地址:http://zlylz.baihongyu.com/

    你可能感兴趣的文章
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    Nginx学习总结(15)—— 提升 Web 应用性能的十个步骤
    查看>>
    Nginx学习总结(8)——Nginx服务器详解
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    Nginx安装SSL模块 nginx: the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx
    查看>>
    nginx安装stream模块配置tcp/udp端口转发
    查看>>
    nginx安装Stream模块配置tcp/udp端口转发
    查看>>
    Nginx安装与常见命令
    查看>>
    nginx安装与配置
    查看>>
    Nginx安装及配置详解
    查看>>
    nginx安装并配置实现端口转发
    查看>>
    nginx安装配置
    查看>>
    Nginx实战之1.1-1.6 Nginx介绍,安装及配置文件详解
    查看>>
    Nginx实战经验分享:从小白到专家的成长历程!
    查看>>
    nginx实现二级域名转发
    查看>>
    Nginx实现动静分离
    查看>>
    Nginx实现反向代理负载均衡
    查看>>
    nginx实现负载均衡
    查看>>
    Nginx将https重定向为http进行访问的配置(附Demo)
    查看>>
    nginx工作笔记004---配置https_ssl证书_视频服务器接口等
    查看>>