विषय पर बढ़ें
पर्यवेक्षित मशीन अनुवाद

यह सामग्री मानव-निर्मित शब्दावलियों और शैली गाइडों के मार्गदर्शन में मशीन जनरेशन द्वारा अनुवादित की गई है। चूँकि इस पाठ की समीक्षा लाइन-दर-लाइन मैन्युअल रूप से नहीं की गई है, इसलिए कभी-कभी त्रुटियाँ या अनाड़ी वाक्य-रचना हो सकती है।

किसी भी विसंगति की स्थिति में, मूल अंग्रेज़ी संस्करण ही प्रामाणिक स्रोत है।

मूल अंग्रेज़ी संस्करण पढ़ें

नई documentation  ·  देखें क्या बदला

विस्तारशील एडमिन इंटरफ़ेस
FastAPI और Starlette के लिए

अपने SQLAlchemy, SQLModel, Beanie, MongoEngine, या Tortoise ORM models से पूर्ण एडमिन इंटरफ़ेस जनरेट करें। Tabler UI kit पर निर्मित starlette-admin आपको list views, auto-generated forms, data exports, और secure authentication देता है। पूरा interface Python में configure करें — frontend code की एक भी line लिखे बिना।

pip install starlette-admin
starlette-admin dashboard showing statistical widgets, recent activity tables, and a sidebar for model views

बिल्ट-इन फ़ीचर्स

आपकी ज़रूरत की हर चीज box से बाहर काम करती है। हर core feature documented extension points include करता है, ताकि आप उसे अपनी requirements के अनुसार ढाल सकें।

Tables

Pagination, multi-column ordering, और state-preserving URLs के साथ data browse, search, और sort करें। List view से fields inline edit करें।

Filters

UI में nested AND/OR queries बनाएँ — text, numbers, dates, और booleans के लिए type-aware operators के साथ।

Forms और uploads

25 से अधिक field types और relational data के लिए forms automatically generate करें। File uploads local या S3 storage पर भेजें।

Actions

Standard Python decorators से bulk और row-level operations बनाएँ। हर run को confirmation modals और custom payload forms के पीछे gate करें।

Export और import

Records को CSV, Excel, JSON, PDF, या tablib द्वारा supported किसी भी format में export करें। Preview-first wizard से bulk import करें जो database में लिखने से पहले हर row validate करता है।

Auth और security

वह authentication provider connect करें जो आप पहले से उपयोग करते हैं। Production-ready defaults के साथ deploy करें — CSRF protection और exports/imports की built-in limits सहित।

Inline forms

Relational data को जगह पर manage करें। Page छोड़े बिना parent model form के भीतर child records edit करें।

Dashboards

Built-in statistic, chart, और table widgets से home page बनाएँ, या उसे पूर्ण custom view से replace कर दें।

i18n और timezones

Admin को multiple languages में serve करें — locale-aware formatting और precise timezone handling box से बाहर।

सब कुछ Python है

rapid development, readable syntax, और long-term maintainability के लिए डिज़ाइन किए गए pure Python API से पूर्ण admin interface बनाएँ।

एडमिन पैनल माउंट करें

कोई model register करें और admin panel को किसी भी FastAPI या Starlette application पर mount करें। फिर fastapi dev चलाएँ और /admin खोलें।

Documentation देखें

main.py
from fastapi import FastAPI
from sqlalchemy import create_engine
from starlette_admin.contrib.sqla import Admin, ModelView

from models import Base, Post

engine = create_engine("sqlite:///blog.db")
Base.metadata.create_all(engine)

app = FastAPI()

admin = Admin(engine, title="Blog Admin", secret_key="change-me")
admin.add_view(ModelView(Post, icon="fa fa-newspaper"))
admin.mount_to(app)

व्यूज़

Search, sorting, default ordering, और export formats plain class attributes से सेट करें। Create/edit forms को form_layout से arrange करें।

Documentation देखें

views.py
from starlette_admin.contrib.sqla import ModelView


class PostView(ModelView):
    fields = ["id", "title", "author", "content", "published", "created_at"]
    searchable_fields = ["title", "content"]
    fields_default_sort = [("created_at", True)]
    exporters = ["csv", "xlsx", "json"]
    form_layout = [
        ("title", "author"),
        "content",
        ("published", "created_at"),
    ]


admin.add_view(PostView(Post, icon="fa fa-newspaper"))

फ़ील्ड्स

Validation, per-page visibility, और starlette-admin values को कैसे पढ़े/दिखाए — इसे नियंत्रित करने के लिए किसी भी auto-detected field को override करें।

Documentation देखें

views.py
from starlette_admin import DateTimeField, RequestAction, StringField, TextAreaField
from starlette_admin.contrib.sqla import ModelView


class PostView(ModelView):
    fields = [
        "id",
        StringField("title", required=True, help_text="Shown on the blog"),
        TextAreaField("content", exclude_from_list=True),
        StringField(
            "author_email",
            getter=lambda request, obj: obj.author.email,
            formatter={RequestAction.LIST: lambda request, value: value or "unset"},
        ),
        DateTimeField("created_at", read_only=True, exclude_from_create=True),
    ]

फ़िल्टर

Built-in query builder को अपने business rules से match करने वाले custom filters से extend करें। आपको जो operations चाहिए, वे underlying database model पर सीधे apply हो सकते हैं।

Documentation देखें

filters.py
from datetime import datetime
from typing import Any

from starlette_admin.contrib.sqla import ModelView
from starlette_admin.filters.base import BaseFilter, FilterApplyContext, FilterDataType


class ActiveThisMonthFilter(BaseFilter):
    name = "this_month"
    label = "Created this month"
    data_type = FilterDataType.NONE  # No value input. The range comes from now().

    def apply(self, ctx: FilterApplyContext) -> Any:
        now = datetime.utcnow()
        start = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
        col = getattr(ctx.view.model, ctx.field_name)
        return col.between(start, now)

class ProductView(ModelView):
    fields = [
        DateTimeField(
            "created_at",
            filters=[ActiveThisMonthFilter, ...],
        ),
    ]

एक्शन

Single decorator से business operations attach करें। Confirmation modals, custom forms, और flash messages framework में बने हैं।

Documentation देखें

views.py
from starlette.requests import Request
from starlette_admin import ActionSelection, action, flash
from starlette_admin.contrib.sqla import ModelView


class ArticleView(ModelView):
    actions = ["publish", "delete"]

    @action(
        name="publish",
        text="Mark as published",
        confirmation="Publish the selected articles?",
        submit_btn_text="Yes, publish",
    )
    async def publish(self, request: Request, selection: ActionSelection) -> None:
        articles = await selection.rows()
        for article in articles:
            article.published = True
        flash(request, f"{len(articles)} articles published.", "success")

प्रमाणीकरण

अपने credential check के चारों ओर तीन standard methods implement करें। Login page, sessions, और redirects starlette-admin handle कर लेता है।

Documentation देखें

auth.py
from starlette.requests import Request
from starlette_admin.auth import AdminUser, AuthProvider, LoginFailed


class MyAuthProvider(AuthProvider):
    async def login(self, username, password, remember_me, request: Request) -> None:
        if not await check_credentials(username, password):
            raise LoginFailed("Invalid username or password")
        request.session["username"] = username

    async def authenticate(self, request: Request) -> AdminUser | None:
        if username := request.session.get("username"):
            return AdminUser(username=username)
        return None

    async def logout(self, request: Request) -> None:
        request.session.clear()


admin = Admin(engine, auth_provider=MyAuthProvider(), secret_key=SECRET)

डैशबोर्ड

Statistic, chart, और table widgets — जो हर request पर live data query करते हैं — से admin home page compose करें।

Documentation देखें

dashboard.py
from starlette_admin import CardRowWidget, ChartWidget, CustomView, StatWidget

dashboard = CardRowWidget(
    children=[
        StatWidget(title="Orders", value_callback=count_orders, countup=True),
        StatWidget(title="Revenue", value_callback=sum_revenue, color="success"),
        ChartWidget(title="Sales", chart_type="area", series_callback=sales_series),
    ]
)

admin = Admin(
    engine,
    title="Shop Admin",
    secret_key="change-me",
    index_view=CustomView(menu_label="Dashboard", icon="fa fa-home", widget=dashboard),
)

प्लगइन और एक्सटेंशन

हर layer replaceable है। Features को self-contained plugins के रूप में package करें, या dedicated extension point में hook करके framework को अपने domain के अनुसार ढालें।

Drop-in plugins

Zero-boilerplate plugins

Plugin package इंस्टॉल करें और उसे अपने Admin instance को pass करें। Fields, converters, templates, और assets स्वयं-ही-स्वयं wire up हो जाते हैं।

from starlette_admin_geospatial import GeospatialPlugin
from starlette_admin.contrib.sqla import Admin

admin = Admin(
    engine,
    plugins=[GeospatialPlugin(default_zoom=13)],
)
Plugins guide पढ़ें
Extension points

किसी भी component में hook करें

Predefined interfaces से आप हर concern को independently swap या extend कर सकते हैं। आवश्यक base class subclass करें और register करें — authentication flow से export formats तक सब customize किया जा सकता है।

सभी extension points देखें