Django 관리자 사용자 정의 페이지

4302 단어 django


장고는 훌륭합니다. 그리고 Django Admin은 훨씬 더 큽니다. 몇 줄의 코드로 제공되는 기능의 양은 놀라울 정도입니다.

그러나 관리자 인터페이스에서 얻을 수 있는 기능의 양이 "무료"인 경우에도 때로는 충분하지 않을 수 있습니다. 특히 중간에서 높은 수준의 복잡성을 가진 사이트를 구축하는 경우 몇 가지 사용자 지정 관리 페이지가 필요할 것입니다.

항상 그렇듯이 Django의 문서는 매우 훌륭합니다. 항상 먼저 확인하는 것이 좋습니다. 그러나 약간 장황하고 사용자 지정 관리 페이지를 구축하기 위한 부분이 문서 전체에 흩어져 있습니다.

사이트에 맞춤 관리 페이지를 추가하는 방법에 대한 요약/치트 시트입니다.

나만의 관리 사이트 만들기



원하는 대로 사용자 지정할 수 있는 사용자 지정 관리 사이트를 만들 것입니다.

class CustomAdminSite(AdminSite): # 1.
    site_header = "Custom Admin Site header"
    site_title = "Custom Admin Site title"

    def get_urls(self): # 2.
        urls = super().get_urls()
        my_urls = [
            path('custom_admin_view/',
                self.admin_view(( # 3.
                CustomAdminView.as_view(admin_site=self))), name='cav'),
        ]
        return my_urls + urls # 4.

admin_site = CustomAdminSite(name='myadmin') # 5.
admin_site.register(MyModel)


admin.py
  • 새 클래스를 확장해야 합니다. AdminSite ( documentation )
  • 관리 사이트의 모든 페이지를 제공하도록 get_urls() 메서드를 재정의합니다: 일반 페이지와 자신의 페이지( documentation )
  • 사용자 정의 관리 페이지를 self.admin_view()로 "래핑"하는 것을 잊지 마십시오. 이는 다른 관리 페이지에서 요구하는 것과 마찬가지로 모든 사용자 지정 페이지에 대한 인증 요구 사항을 제공합니다. 그렇지 않으면 보호 없이 액세스할 수 있습니다! ( documentation )
  • 일반 관리 페이지는 매우 관대하기 때문에 일반 관리 URL 앞에 사용자 정의 관리 페이지가 포함되어 있습니다( documentation )
  • 고유한 사용자 정의 관리 사이트의 인스턴스를 생성하고 해당 인스턴스를 사용하여 기본 관리 사이트 대신 관리 사이트에 모델을 등록합니다.

  • 기본 관리 사이트 재정의



    여러 관리 사이트를 보유할 계획이 없다면 기본 관리 사이트를 사용자 정의 사이트로 바꾸는 것이 좋습니다( documentation ).

    from django.contrib.admin.apps import AdminConfig
    
    class CustomAdminConfig(AdminConfig): # 1.
        default_site = 'myproject.admin.CustomAdminSite' # 2.
    


    apps.py

    INSTALLED_APPS = [
        ...
        'myproject.apps.CustomAdminConfig', # 3.
        ...
    ]
    


    settings.py

    admin_site.register(EquipmentCategory, EquipmentCategoryAdmin)
    admin_site.register(EquipmentLocation, EquipmentLocationAdmin)
    


  • 기본값을 확장하는 앱 구성 만들기AdminConfig
  • 이전 섹션에서 만든 사용자 정의 관리자의 클래스를 사용하십시오
  • .
  • django.contrib.admin 목록에서 기본INSTALLED_APPS 앱을 교체합니다.

  • 나만의 맞춤 관리 보기 만들기



    마지막으로 사용자 지정 관리 보기를 만들 수 있습니다. 일부 추가 컨텍스트 항목이 있는 일반 보기입니다( documentation ).

    class CustomAdminView(View):
        admin_site = None # 1.
    
        def get(self, request):
            return render(request, 'custom_admin_view.html', dict(
                self.admin_site.each_context(request), # 1.
            ))
    
    


  • 이 보기를 인스턴스화할 때 자신의 사용자 정의 관리 사이트에 대한 참조를 전달하십시오(첫 번째 섹션 참조).
  • 이들은 site_name , site_title 등과 같은 공통 필드를 갖기 위해 사용자 정의 관리 사이트에 필요한 공통 컨텍스트 항목입니다(이러한 사용자 정의 필드에 대한 첫 번째 섹션 참조).

  • 바라건대, 이제 혼란 없이 쉽게 자신만의 사용자 지정 관리 페이지를 추가할 수 있습니다.

    즐거운 코딩하세요!

    좋은 웹페이지 즐겨찾기