Flask-Admin 后台管理
Flask-Admin是一个简单易用的Flask扩展,可以为Flask应用程序增加管理界面。
1、安装扩展
先用pip 安装flask-admin扩展 pip install flask-admin
2、有点不同的是,import时,是import: flask.ext.admin 或者import flask_admin
第一个manage.py,或者helloadmin.py
from flask import Flask from flask_admin import Admin, BaseView, expose app = Flask(__name__) admin = Admin(app,name='后台管理系统') app.run()
这里把name加上了,会看见一个标题。
运行它 python manage.py, 在浏览器地址栏输入localhost:5000/admin 或者把localhost替换为127.0.0.1,可以看见一个光秃秃的运行界面如上图。
3、加点东西(标签)
现在,创建一个新的index.html
文件并写入如下内容:
{% extends 'admin/master.html' %} {% block body %} Hello World from MyView! {% endblock %}
然后把它放到templates目录。为维持一致的外观和感觉,所有管理页面应该延伸于admin/master.html模板。
目录结构是:
manage.py templates-index.html
再次运行程序,刷新,现在应该看到Hello页面的新的管理页面起作用了。点击这个标签。
4、添加第2级目录
写另一个view,让它也继承BaseView,不过显示的东西不同:
class MyViewCate2(BaseView): #这里类似于app.route(),处理url请求 @expose('/') def index(self): return self.render('index2.html')
index2.html如下:
1. {% extends 'admin/master.html' %} 2. #为了保持一致,继承adminmaster.html模板 3. 4. {% block body %} 5. 6. 欢迎来到第2层 7. 8. {% endblock %}
OK,现在再加入这个层级的view:
admin.add_view(MyViewCate2(name='Hello 1', endpoint='test1', category='Test')) admin.add_view(MyViewCate2(name='Hello 2', endpoint='test2', category='Test')) admin.add_view(MyViewCate2(name='Hello 3', endpoint='test3', category='Test'))
重新运行,刷新,应该看到:
我们就先完成了一个添加目录、标签的网页,好快啊是不是?可以通过http://127.0.0.1:5000/admin/test1 访问它。全部代码如下:
from flask import Flask from flask.ext.admin import Admin, BaseView, expose #from flask_admin import Admin, BaseView, expose class MyView(BaseView): #这里类似于app.route(),处理url请求 @expose('/') def index(self): return self.render('index.html') class MyViewCate2(BaseView): #这里类似于app.route(),处理url请求 @expose('/') def index(self): return self.render('index2.html') app = Flask(__name__) admin = Admin(app,name="后台管理系统") # Add administrative views here admin.add_view(MyView(name='Hello')) admin.add_view(MyViewCate2(name='Hello 1', endpoint='test1', category='Test')) admin.add_view(MyViewCate2(name='Hello 2', endpoint='test2', category='Test')) admin.add_view(MyViewCate2(name='Hello 3', endpoint='test3', category='Test')) app.run()