flask的MethodView封装

简介:   # -*- coding: utf-8 -*- from flask import request, render_template, Blueprint from flask.

 

# -*- coding: utf-8 -*-

from flask import request, render_template, Blueprint
from flask.views import MethodView
from flaskext.principal import RoleNeed, Permission
from models import User
from utils.pagination import Pagination


admin = Permission(RoleNeed('admin'))
auth = Permission(RoleNeed('authenticated'))
null = Permission(RoleNeed('null'))


class SeniorBlueprint(Blueprint):

    def expose(self, rule, **options):
        def decorator(v):
            endpoint = options.pop("endpoint", v.__name__)
            options["view_func"] = v.as_view(endpoint)
            options["methods"] = v.methods
            self.add_url_rule(rule, **options)
            return v
        return decorator


class SeniorMethodView(MethodView):

    def paginate(self, view):
        page_no = int( request.values.get("page", 1) )
        page_size = int( request.values.get("page_size", 30) )
        return Pagination(view).paginate(page_no, page_size)


user_module = SeniorBlueprint("user", __name__)

@user_module.expose('list/<role>/')
@user_module.expose('list/')
class UserAPI(SeniorMethodView):
    methods = ["GET", "POST"]
    decorators = [ auth.require(403) ] #要求登录

    def get(self, role=""):
        if role == "admin":
            params = dict(is_superuser=True, is_active=True)
        elif role:
            params = dict(role=role, is_active=True)
        else:
            params = dict(is_active=True)
        view = Session().query(User).filter_by(**params).order_by("-id")
        page = self.paginate(view)
        return render_template("user/list.html", page=page)

    post = get
目录
相关文章
|
9月前
|
网络协议 测试技术 Python
PythonWeb开发基础(三)类Flask框架请求封装
类Flask框架请求封装 Web服务器 本质是个TCP服务器,监听在特定端口上 支持HTTP协议,能够将HTTP请求报文进行解析,能够把响应数据进行HTTP协议的报文封装并返回浏览器端。
102 0
|
Web App开发 网络协议 iOS开发
类 Flask 框架请求封装| 学习笔记
快速学习类 Flask 框架请求封装
559 0
类 Flask 框架请求封装| 学习笔记
|
3月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
175 3
|
3月前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
3月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
191 2
|
3月前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
253 2
|
3月前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
构建RESTful APIs:使用Python和Flask
51 1
|
4月前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第12天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。首先概述了API的重要性及RESTful API的基本概念,接着详细讲解了Flask框架的特性和安装方法。通过创建一个基本的Flask应用,定义了处理“图书”资源的GET、POST、PUT和DELETE方法的路由,展示了如何处理请求和响应,以及如何进行错误处理。最后,提供了运行和测试API的方法,总结了Flask在构建RESTful API方面的优势。
54 1
|
4月前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第10天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web应用框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了代码示例。通过这些步骤,读者可以快速掌握使用Flask构建RESTful API的方法。
78 1