or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

appengine-integration.mdcore-admin.mdfile-admin.mdforms.mdgeoalchemy-integration.mdhelpers-utilities.mdindex.mdmodel-views.mdmongoengine-integration.mdredis-integration.mdsqlalchemy-integration.md
tile.json

tessl/pypi-flask-admin

Simple and extensible admin interface framework for Flask

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/flask-admin@1.6.x

To install, run

npx @tessl/cli install tessl/pypi-flask-admin@1.6.0

index.mddocs/

Flask-Admin

Flask-Admin is a simple and extensible admin interface framework for Flask applications. It provides a flexible system for creating administrative interfaces with minimal code, supporting multiple ORMs including SQLAlchemy, MongoEngine, and Peewee, along with file management capabilities.

Package Information

  • Package Name: flask-admin
  • Language: Python
  • Installation: pip install flask-admin

Core Imports

from flask_admin import Admin, BaseView, AdminIndexView, expose

For model views with specific ORMs:

from flask_admin.contrib.sqla import ModelView as SQLAModelView
from flask_admin.contrib.mongoengine import ModelView as MongoModelView
from flask_admin.contrib.fileadmin import FileAdmin

For actions and menu items:

from flask_admin.actions import action
from flask_admin.menu import MenuLink

Basic Usage

from flask import Flask
from flask_admin import Admin, BaseView, expose
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///admin.db'

db = SQLAlchemy(app)

# Sample model
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    email = db.Column(db.String(120), unique=True)

# Initialize admin
admin = Admin(app, name='My Admin', template_mode='bootstrap3')

# Add model view
admin.add_view(ModelView(User, db.session, name='Users'))

# Custom view
class CustomView(BaseView):
    @expose('/')
    def index(self):
        return self.render('custom_template.html')

admin.add_view(CustomView(name='Custom Page', category='Tools'))

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

Architecture

Flask-Admin follows a modular architecture built around several key concepts:

  • Admin Collection: The main Admin class manages views and creates the admin interface
  • Views: Individual admin pages, either custom (BaseView) or model-based (ModelView)
  • Menu System: Hierarchical navigation with categories, links, and automatic view registration
  • ORM Integration: Contrib modules provide seamless integration with popular ORMs
  • Template System: Jinja2 templates with customizable themes and layouts
  • Security: Built-in permission checking and CSRF protection

Capabilities

Core Admin Interface

Main admin interface management including view registration, menu organization, and Flask application integration.

class Admin:
    def __init__(
        self, 
        app=None, 
        name=None, 
        url=None, 
        subdomain=None, 
        index_view=None, 
        translations_path=None, 
        endpoint=None, 
        static_url_path=None, 
        base_template=None, 
        template_mode=None, 
        category_icon_classes=None
    ): ...
    
    def add_view(self, view): ...
    def add_views(self, *args): ...
    def init_app(self, app, index_view=None, endpoint=None, url=None): ...

Core Admin Interface

Base Views and Custom Views

Foundation classes for creating custom admin views with routing, templating, and permission controls.

@expose(url='/', methods=('GET',))
def expose_decorator(url='/', methods=('GET',)): ...

class BaseView:
    def __init__(
        self,
        name=None,
        category=None, 
        endpoint=None,
        url=None,
        static_folder=None,
        static_url_path=None,
        menu_class_name=None,
        menu_icon_type=None,
        menu_icon_value=None
    ): ...
    
    def is_accessible(self): ...
    def render(self, template, **kwargs): ...

Base Views and Custom Views

Model Views and CRUD Operations

Base model view functionality for database-driven admin interfaces with list, create, edit, delete operations.

class BaseModelView:
    # Configuration attributes
    list_columns = None
    column_searchable_list = None
    column_filters = None
    form_columns = None
    can_create = True
    can_edit = True
    can_delete = True
    can_export = False
    export_types = ['csv']

Model Views and CRUD Operations

Forms and Field Types

Advanced form system with custom field types, validation, and widget support for admin interfaces.

class BaseForm: ...
class SecureForm: ...

class DateTimeField: ...
class TimeField: ...
class Select2Field: ...
class Select2TagsField: ...
class JSONField: ...

Forms and Field Types

SQLAlchemy Integration

Complete SQLAlchemy ORM integration providing database model administration with relationships, filtering, and advanced querying.

from flask_admin.contrib.sqla import ModelView

class ModelView(BaseModelView):
    def __init__(self, model, session, **kwargs): ...

SQLAlchemy Integration

MongoEngine Integration

MongoDB document administration through MongoEngine ORM integration with embedded documents and NoSQL-specific features.

from flask_admin.contrib.mongoengine import ModelView, EmbeddedForm

class ModelView(BaseModelView): ...
class EmbeddedForm: ...

MongoEngine Integration

File Management

File and directory administration interface with upload, download, edit, and file browser capabilities.

from flask_admin.contrib.fileadmin import FileAdmin, LocalFileStorage

class FileAdmin(BaseFileAdmin):
    def __init__(self, base_path, *args, **kwargs): ...

class LocalFileStorage:
    def __init__(self, base_path): ...

File Management

Actions and Batch Operations

Batch action system for performing operations on multiple selected items in model views.

@action(name, text, confirmation=None)
def action_decorator(name, text, confirmation=None): ...

class ActionsMixin:
    def handle_action(self, return_view=None): ...
    def is_action_allowed(self, name): ...

Actions and Batch Operations

Helper Functions and Utilities

Utility functions for form handling, URL generation, security, and template context management.

def get_current_view(): ...
def is_safe_url(target): ...
def flash_errors(form, message): ...
def prettify_class_name(name): ...

Helper Functions and Utilities

Redis CLI Integration

Interactive Redis console providing web-based command execution for Redis database administration.

from flask_admin.contrib.rediscli import RedisCli

class RedisCli(BaseView):
    def __init__(self, redis, name=None, category=None, endpoint=None, url=None): ...

Redis CLI Integration

GeoAlchemy Integration

Geographic data support through GeoAlchemy2 integration with interactive map widgets for spatial database administration.

from flask_admin.contrib.geoa import ModelView
from flask_admin.contrib.geoa.fields import GeoJSONField
from flask_admin.contrib.geoa.widgets import LeafletWidget

class ModelView(SQLAModelView): ...
class GeoJSONField(JSONField): ...
class LeafletWidget(TextArea): ...

GeoAlchemy Integration

Google App Engine Integration

Google App Engine datastore integration supporting both legacy DB API and modern NDB API models.

from flask_admin.contrib.appengine import ModelView
from flask_admin.contrib.appengine.view import NdbModelView, DbModelView

def ModelView(model): ...
class NdbModelView(BaseModelView): ...
class DbModelView(BaseModelView): ...

Google App Engine Integration

Menu System and Navigation

Flexible menu system supporting categories, links, icons, and hierarchical navigation structures.

class MenuLink:
    def __init__(
        self,
        name,
        url=None,
        endpoint=None,
        category=None,
        class_name=None,
        icon_type=None,
        icon_value=None,
        target=None
    ): ...

Menu System and Navigation