🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 欢迎来到 Flask_Dashed 的文档! ## 介绍 Flask-Dashed 提供构建简单以及具有扩展性的管理界面的工具。 在线演示: [http://flask-dashed.jeanphi.fr/](http://flask-dashed.jeanphi.fr/) (需要 Github 账号)。 列表视图: ![https://box.kancloud.cn/2016-03-12_56e38c26c27ad.png](https://box.kancloud.cn/2016-03-12_56e38c26c27ad.png) 表单视图: ![https://box.kancloud.cn/2016-03-12_56e38c26dd0ab.png](https://box.kancloud.cn/2016-03-12_56e38c26dd0ab.png) ## 安装 ``` pip install Flask-Dashed ``` ## 最小的使用 代码: ``` from flask import Flask from flask_dashed.admin import Admin app = Flask(__name__) admin = Admin(app) if __name__ == '__main__': app.run() ``` 示例应用程序: [http://github.com/jeanphix/flask-dashed-demo](http://github.com/jeanphix/flask-dashed-demo) ## 安全地处理 保护(“武装”)所有模块端: ``` from flask import session book_module = admin.register_module(BookModule, '/books', 'books', 'book management') @book_module.secure(http_code=401) def login_required(): return "user" in session ``` 保护(“武装”)特定的模块端: ``` @book_module.secure_endpoint('edit', http_code=403) def check_edit_credential(view): # I'm now signed in, may I modify the ressource? return session.user.can_edit_book(view.object) ``` ## 模块组织 由于管理节点( node )注册到一个“树”,因此很容易地管理它们。: ``` library = admin.register_node('/library', 'library', my library) book_module = admin.register_module(BookModule, '/books', 'books', 'book management', parent=library)``` 为了满足你的需求,导航和面包屑会自动地建立。子模块的安全将会继承自父模块。 ## SQLALchemy 扩展 Code: ``` from flask_dashed.ext.sqlalchemy import ModelAdminModule class BookModule(ModelAdminModule): model = Book db_session = db.session book_module = admin.register_module(BookModule, '/books', 'books', 'book management') ``` # Api ## Admin 对象 `class admin.Admin(app, url_prefix='/admin', title='flask-dashed', main_dashboard=None, endpoint='admin')` Class that provides a way to add admin interface to Flask applications. Parameters: * **app** – The Flask application * **url_prefix** – The url prefix * **main_dashboard** – The main dashboard object * **endpoint** – The endpoint `add_path_security(path, function, http_code=403)` Registers security function for given path. Parameters: * **path** – The endpoint to secure * **function** – The security function * **http_code** – The response http code `check_path_security(path)` Checks security for specific and path. Parameters: **path** – The path to check `register_module(module_class, url_prefix, endpoint, short_title, title=None, parent=None)` Registers new module to current admin. `register_node(url_prefix, endpoint, short_title, title=None, parent=None, node_class=<class 'admin.AdminNode'>)` Registers admin node. Parameters: * **url_prefix** – The url prefix * **endpoint** – The endpoint * **short_title** – The short title * **title** – The long title * **parent** – The parent node path * **node_class** – The class for node objects ## Admin 模块 `admin.recursive_getattr(obj, attr)` Returns object related attributes, as it’s a template filter None is return when attribute doesn’t exists. eg: ``` a = object() a.b = object() a.b.c = 1 recursive_getattr(a, 'b.c') => 1 recursive_getattr(a, 'b.d') => None``` `class admin.AdminNode(admin, url_prefix, endpoint, short_title, title=None, parent=None)` An AdminNode just act as navigation container, it doesn’t provide any rules. Parameters: * **admin** – The parent admin object * **url_prefix** – The url prefix * **enpoint** – The endpoint * **short_title** – The short module title use on navigation & breadcrumbs * **title** – The long title * **parent** – The parent node `parents` Returns all parent hierarchy as list. Usefull for breadcrumbs. `secure(http_code=403)` Gives a way to secure specific url path. Parameters: **http_code** – The response http code when False `url_path` Returns the url path relative to admin one. `class admin.AdminModule(*args, **kwargs)` Class that provides a way to create simple admin module. Parameters: * **admin** – The parent admin object * **url_prefix** – The url prefix * **enpoint** – The endpoint * **short_title** – the short module title use on navigation & breadcrumbs * **title** – The long title * **parent** – The parent node `add_url_rule(rule, endpoint, view_func, **options)` Adds a routing rule to the application from relative endpoint. `view_class` is copied as we need to dynamically apply decorators. Parameters: * **rule** – The rule * **endpoint** – The endpoint * **view_func** – The view `secure_endpoint(endpoint, http_code=403)` Gives a way to secure specific url path. Parameters: * **endpoint** – The endpoint to protect * **http_code** – The response http code when False `url` Returns first registered (main) rule as url. ## SQLAlchemy 扩展 `class ext.sqlalchemy.ModelAdminModule(*args, **kwargs)` SQLAlchemy model admin module builder. `count_list(search=None)` Counts filtered list. Parameters: **search** – The string for quick search `create_object()` New object instance new object. `delete_object(object)` Deletes object. Parameters: **object** – The object to delete `edit_query_factory` Returns query for object edition. `form_view` alias of `ObjectFormView` `get_actions_for_object(object)` “Returns actions for object as and tuple list. Parameters: **object** – The object `get_object(pk)` Gets back object by primary key. Parameters: **pk** – The object primary key `get_object_list(search=None, order_by_name=None, order_by_direction=None, offset=None, limit=None)` Returns ordered, filtered and limited query. Parameters: * **search** – The string for search filter * **order_by_name** – The field name to order by * **order_by_direction** – The field direction * **offset** – The offset position * **limit** – The limit `list_query_factory` Returns non filtered list query. `save_object(obj)` Saves object. Parameters: **object** – The object to save