Skip to main content

No project description provided

Project description

Admin Dashboard App for FastAPI/Flask/Django

Build Status codecov License PyPi Python 3.10

Screenshots

SignIn View List View Change View

tweet

Introduction

FastAdmin is an easy-to-use Admin App for FastAPI inspired by Django Admin.

FastAdmin was built with relations in mind and admiration for the excellent and popular Django Admin. It's engraved in its design that you may configure your admin dashboard for FastAPI/Flask/Django easiest way.

FastAdmin is designed to be minimalistic, functional and yet familiar.

Getting Started

Installation

Install the package using pip:

pip install fastadmin["fastapi"]  # for fastapi
pip install fastadmin["flask"]  # for flask
pip install fastadmin["django"]  # for django
pip install fastadmin["fastapi,django,flask"]  # for multiple

or using poetry

poetry add 'fastadmin["fastapi"]'  # for fastapi
poetry add 'fastadmin["flask"]'  # for flask
poetry add 'fastadmin["django"]'  # for django
poetry add 'fastadmin["fastapi,django,flask"]'  # for multiple

Setup ENV variables

export ADMIN_USER_MODEL=User
export ADMIN_USER_MODEL_USERNAME_FIELD=username
export ADMIN_SECRET_KEY=secret_key

For additional information see Settings documentation.

Quick Tutorial

Setup with your framework:

For FastAPI:

from fastapi import FastAPI
from fastadmin import fastapi_app as admin_app

...

app = FastAPI()

...

app.mount("/admin", admin_app)

...

Run your project (see https://fastapi.tiangolo.com/tutorial/first-steps/):

uvicorn ...

Go to http://localhost:8000/admin.

For Flask:

from flask import Flask
from fastadmin import flask_app as admin_app

...

app = Flask(__name__)

...

app.register_blueprint(admin_app, url_prefix="/admin")

...

Run your project (see https://flask.palletsprojects.com/en/2.2.x/quickstart/):

flask ...

Go to http://localhost:5000/admin.

For Django:

In root urls.py

from django.urls import path
from fastadmin import get_django_admin_urls as get_admin_urls

...

urlpatterns = [
    path("admin/", get_admin_urls()),
]

Run your project (see https://docs.djangoproject.com/en/4.1/intro/):

python manage.py runserver

Go to http://localhost:8000/admin.

Register ORM models:

You have to implement authenticate method for FastAdmin authentication on AdminModel class which is registered for ADMIN_USER_MODEL.

For Tortoise ORM:

import bcrypt
from tortoise.models import Model
from fastadmin import register, TortoiseModelAdmin


class User(Model):
    username = fields.CharField(max_length=255, unique=True)
    hash_password = fields.CharField(max_length=255)
    is_superuser = fields.BooleanField(default=False)
    is_active = fields.BooleanField(default=False)

    ...



class Group(Model):
    name = fields.CharField(max_length=255)
    ...


@register(User)
class UserAdmin(TortoiseModelAdmin):
    label_fields = ("username",)
    exclude = ("hash_password",)
    list_display = ("id", "username", "is_superuser", "is_active")
    list_display_links = ("id", "username")
    list_filter = ("id", "username", "is_superuser", "is_active")
    search_fields = ("username",)

    async def authenticate(self, username: str, password: str) -> UUID | int | None:
        user = await User.filter(username=username, is_superuser=True).first()
        if not user:
            return None
        if not bcrypt.checkpw(password.encode(), user.hash_password.encode()):
            return None
        return user.id


@register(Group)
class GroupAdmin(TortoiseModelAdmin):
    label_fields = ("name",)
    list_display = ("id", "name")
    list_display_links = ("id",)
    list_filter = ("id", "name")
    search_fields = ("name",)

For SQLAlchemy:

Coming soon...

For PonyORM:

Coming soon...

For additional information see ModelAdmin and InlineModelAdmin documentation.

Documentation

See full documentation here.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

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

Source Distribution

fastadmin-0.1.20.tar.gz (2.0 MB view hashes)

Uploaded Source

Built Distribution

fastadmin-0.1.20-py3-none-any.whl (2.0 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