Skip to main content

Simple and extensible admin interface framework for Starlette/FastApi

Project description

starlette-admin

Starlette-Admin is a simple and extensible admin interface framework for Starlette/FastApi.

Test suite Publish Codecov Package version Supported Python versions

The key features are:

  • Flexibility : The biggest feature of Starlette-Admin is flexibility. Start with autogenerated CRUD-views of your model and customize those views & forms as the need arises.
  • Datatables : Starlette-Admin use Datatables to render list. Main Features included are:
    • Multi-column ordering: Sort data by multiple columns at once.
    • Full-text search: Filter results by text search with highlight.
    • Search Builder: Filter results by complex query including AND and OR conditions.
    • Many Export options: Export your data to CSV, PDF, Excel and Browser Print.
    • You can easily include any other features you need from datatables. Read Datatables documentation for more information.
  • Files Handling : Easily attach files to your model. Thanks to SQLAlchemy-file for SQLAlchemy integration
  • Multiple admin : Expose multiple admin interfaces.
  • Modern UI using Tabler

This project is inspired by Flask-Admin and the main goal is to provide similar tool for Starlette/FastApi.

Starlette-Admin is designed to work with any ORM but have currently built-in support for:


Documentation: https://jowilf.github.io/starlette-admin

Source Code: https://github.com/jowilf/starlette-admin


Demo Application

starlette-admin-demo is a complete Starlette application that showcases Starlette-Admin features.

click here to check the online version

Installation

PIP

$ pip install starlette-admin

Poetry

$ poetry add starlette-admin

Example

SQLAlchemy integration

from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from starlette.applications import Starlette
from starlette_admin.contrib.sqla import Admin, ModelView

Base = declarative_base()
engine = create_engine(
    "sqlite:///example.db", connect_args={"check_same_thread": False}
)


class Post(Base):
    __tablename__ = "posts"

    id = Column(Integer, primary_key=True)
    title = Column(String)


class PostAdmin(ModelView, model=Post):
    pass


Base.metadata.create_all(engine)
app = Starlette()

admin = Admin(engine)
admin.add_view(PostAdmin)
admin.mount_to(app)

MongoEngine integration

import mongoengine
from mongoengine import connect
from starlette.applications import Starlette
from starlette_admin.contrib.mongoengine import Admin, ModelView

connect("example")


class Post(mongoengine.Document):
    title = mongoengine.StringField(min_length=3, required=True)


class PostAdmin(ModelView, document=Post):
    pass


app = Starlette()

admin = Admin()
admin.add_view(PostAdmin)
admin.mount_to(app)

Now visiting /admin on your browser you can see the Admin interface.

Project details


Release history Release notifications | RSS feed

This version

0.1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette-admin-0.1.1.tar.gz (1.8 MB view hashes)

Uploaded Source

Built Distribution

starlette_admin-0.1.1-py3-none-any.whl (1.8 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page