رد فعل المشرف و django إطار الراحة

بعد أن تعثرت مؤخرًا حول مقالة حول رد فعل المشرف ، قررت تجريب أي نوع من الوحوش. كان من المثير للاهتمام أن نربط هذا بين يونغ ، لحسن الحظ هناك dataprovider لإطار الراحة .

ولكن عليك أولاً إرسال لوحة المشرف كقمة واجهة برمجة تطبيقات. من حيث المبدأ ، يتم ذلك بسهولة بمساعدة مجموعات العرض ، والتي يمكن إنشاؤها تلقائيًا من خلال تصفح النماذج من لوحة المسؤول.

def get_serializer_class(model): return type( f"{model.__name__}Serializer", (ModelSerializer,), {"Meta": type("Meta", (), {"model": model, "fields": "__all__"})}, ) for model, model_admin in admin.site._registry.items(): params = { "queryset": model.objects.all(), "filter_backends": [DjangoFilterBackend, OrderingFilter], "info": action(methods=["get"], detail=False)(get_info(model_admin)), "serializer_class": get_serializer_class(model), "basename": model._meta.model_name, "request": r, "fields": list(model_admin.get_fields(r)), "list_display": list(model_admin.get_list_display(r)), "ordering_fields": list(model_admin.get_sortable_by(r)), "filterset_fields": list(model_admin.get_list_filter(r)), "permission_classes": [permissions.IsAdminUser, permissions.DjangoModelPermissions], "pagination_class": CustomPageNumberPagination } viewset = type(f"{model.__name__}ViewSet", (viewsets.ModelViewSet,), params) router.register( f"{model._meta.app_label}/{model._meta.model_name}", viewset ) 

حتى التمييز بين الحقوق يعمل من خارج منطقة الجزاء!



رد فعل المشرف يعمل من خارج منطقة الجزاء. بفضل ListGuesser ، يتم إنشاء نماذج EditGuesser ، إلخ ، تلقائيًا.





أرغب في جعلها أقرب إلى النموذج استنادًا إلى بيانات من خيارات drf ، لكن لم أستطع تحديدها على الفور ، لقد تركت المهمة لاحقًا (طلبات السحب مرحب بها).

لجعلها مريحة لجمع احصائيات للجبهة ، وأنا جعلت قيادة الإدارة الصغيرة

 import subprocess, os, sys from django.core.management.base import BaseCommand from django.core import management class Command(BaseCommand): help = 'Build react-admin' def handle(self, *args, **options): cwd = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../src') ps = subprocess.Popen("yarn install", shell=True, cwd=cwd) ps.wait() and sys.exit(1) ps = subprocess.Popen("yarn build", shell=True, cwd=cwd) ps.wait() and sys.exit(1) management.call_command('collectstatic') 

للمحاولة ، ما عليك سوى إضافة "django_react_admin" إلى INSTALLED_APPS وإضافة عناوين URL:

 from django_react_admin import urls from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('react_admin/', include(urls.urlpatterns)), ] 

المشروع نفسه على جيثب

عموما لوحة الادارة في شكل api مفيد جدا. يمكنك ، على سبيل المثال ، إنشاء تطبيق محمول على nativescript.

Source: https://habr.com/ru/post/ar478802/


All Articles