中文版flask_admin官方文档

熬夜翻译的flask_admin文档,分享给跟我一样入门flask的朋友们!

在这里插入图片描述

入门(Getting Started)

初始化(Initialization)

  • 第一步是初始化flask应用程序的空管理界面:
from flask import Flask
from flask_admin import Admin

app = Flask(__name__)

# set optional bootswatch theme
app.config['FLASK_ADMIN_SWATCH'] = 'cerulean'

admin = Admin(app, name='microblog', template_mode='bootstrap3')
# Add administrative views here

app.run()
  • 这里,名称和模板模式参数都是可选的。或者,您可以使用init_app()方法。

    如果启动此应用程序并导航到http://localhost:5000/admin/,则应该会看到一个顶部带有导航栏的空白页。通过指定适合您需要的引导样本主题自定义外观(有关可用样本,请参阅http://bootswatch.com/3/)。

添加模型视图(Adding Model Views)

  • 模型视图允许您添加一组专用的管理页面,用于管理数据库中的任何模型。通过创建ModelView类的实例来实现这一点,您可以从Flask管理员的一个内置ORM后端导入该类。例如,sqlAlchemy后端,您可以使用如下所示:
from flask_admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

admin = Admin(app, name='microblog', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Post, db.session))
  • 这将为您的模型提供一组功能齐全的CRUD视图:
    • 列表视图,支持搜索、排序、筛选和删除记录。
    • 用于添加新记录的创建视图。
    • 用于更新现有记录的编辑视图。
    • 可选的只读详细信息视图。
    • 有许多选项可用于自定义这些内置视图的显示和功能。有关详细信息,请参见自定义内置视图。有关其他可用ORM后端的详细信息,请参阅使用不同的数据库后端。

向索引页添加内容(Adding Content to the Index Page)

  • 您访问http://localhost:5000/admin/时,您首先会注意到它只是一个带有导航菜单的空页面。若要向此页面添加一些内容,请将以下文本另存为项目模板目录中的admin/index.html:
{
   % extends 'admin/master.html' %}

{
   % block body %}
  <p>Hello world</p>
{
   % endblock %}
  • 这将覆盖默认索引模板,但仍会提供内置导航菜单。因此,现在您可以向索引页添加任何内容,同时保持一致的用户体验。

授权和权限(Authorization & Permissions)

  • 为应用程序设置管理界面时,首先要解决的问题之一是如何避免不需要的用户进入。对于flask admin,有几种不同的方法来处理这个问题。

HTTP Basic Auth

  • 幸的是,没有简单的方法可以将HTTP基本身份验证仅应用于管理界面。

  • 最简单的身份验证形式是HTTP基本身份验证。它不会干扰数据库模型,也不需要编写任何新的视图逻辑或模板代码。所以当你在部署一些仍在开发中的东西时,在你希望全世界都能看到它之前,它是非常好的。

  • 看看Flask-BasicAuth,看看将整个应用程序置于HTTP Basic Auth之后有多容易。

自定义(Rolling Your Own)

  • 一个更为灵活的解决方案,Flask-Admin 让你可以在你的每个View类里面,通过简单的重写is_accessible方法定义访问控制规则。你如何实现逻辑取决于你自己,但如果你是使用像Flask-Admin一样低级别的包,那么限制登录可以简单地如:
class MicroBlogModelView(sqla.ModelView):

    def is_accessible(self):
        return login.current_user.is_authenticated

    def inaccessible_callback(self, name, **kwargs):
        # redirect to login page if user doesn't have access
        return redirect(url_for('login', next=request.url))
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值