Django Xadmin 공식 문서의 5 Xadmin 플러그인 제작
Xadmin의 플러그인 시스템 구조 디자인은 어느 정도에
wordpress
의 디자인을 참고했다.Xadmin의 플러그인 시스템 구조를 이해하려면 먼저 XadminAdminView
의 개념을 이해해야 한다.간단하게 말하면 Xadmin 시스템의 모든 페이지는 AdminView
대상이 되돌아오는 HttpResponse
결과이다.Xadmin의 플러그인 시스템이 하는 일은 AdminView
운행 과정에서 실행하는 논리를 바꾸거나 되돌아오는 결과를 바꾸어 기존 기능을 수정하거나 강화하는 효과가 있다.다음은 전체 플러그인이 제작 완료부터 실제 운행까지의 전체 과정을 살펴본다.먼저 자체 플러그인 클래스, 플러그인 클래스 상속
BaseAdminPlugin
을 만들어야 합니다.class HelloWorldPlugin(BaseAdminPlugin):
...
개발된 플러그인은 먼저 Xadmin에 등록해야 하며 예제 코드는 다음과 같습니다.
# ListAdminView Model
xadmin.site.register_plugin(HelloWorldPlugin, ListAdminView)
그 중에서 플러그인의 등록과 사용은 참고할 수 있다
xadmin.sites.AdminSite.register_plugin()
.플러그인을 Xadmin에 등록하면 Xadmin은
AdminView
실례를 만들 때 이 플러그인을 실례plugins
속성에 넣습니다.AdminView
가 요청을 처리할 때 plugins
의 플러그인 init_request()
방법을 하나씩 호출하고 플러그인은 이 방법에서 일반적으로 초기화된 작업을 하고 Boolean 값을 되돌려줍니다 AdminView
플러그인을 불러올 필요가 있는지 알려 줍니다.init_request()
방법이 False
로 되돌아올 때 AdminView
이 플러그인을 불러오지 않습니다.예는 다음과 같습니다.class HelloWorldPlugin(BaseAdminPlugin):
say_hello = False
# ``say_hello``
def init_request(self, *args, **kwargs):
return bool(self.say_hello)
상기 실례에서 플러그인은 자신의
say_hello
속성에 따라 자신이 불러올지 여부를 결정합니다.say_hello
속성이 계속 False
될 것 같습니다. 그러면 이 플러그인은 영원히 불러오지 않을 것입니다.사실 Xadmin은 플러그인 실례를 만들 때 OptionClass
같은 이름의 속성을 플러그인의 속성으로 바꿉니다.이렇게 하면 서로 다른 OptionClass
아래에서 서로 다른 플러그인 결과가 나올 수 있다. 실례는 다음과 같다.class ListAdminView(ModelAdminView):
#
@filter_hook
def get_context(self):
...
filter_hook()
장식 방법을 사용하는 과정에서 일정한 원칙에 따라 플러그인의 동명 방법을 집행하고 구체적인 정보는 이 장식기의 문서 내용을 조사한다.xadmin.views.base.filter_hook(func)
AdminView 。 , :
1. plugins , ;
2. priority ;
3. , :
,AdminView ;
__ , AdminView , , , __() , AdminView , :
def get_context(self, __):
c = {'key': 'value'}
c.update(__())
return c
__ , AdminView , ;
4. ;
이 장식기의 실행 원칙에 따라 상기 예시
ListAdminView
의 get_context
의 반환 값을 수정하려면 플러그인에서 다음과 같은 코드를 실현할 수 있습니다.class HelloWorldPlugin(BaseAdminPlugin):
# , ListAdminView get_context
def get_context(self, context):
context.update({'hello_target': 'World!!'})
return context
플러그인이
AdminView
방법 앞에서 실행되기를 원하거나 AdminView
방법을 완전히 자신의 방법으로 대체하기를 원한다면:class HelloWorldPlugin(BaseAdminPlugin):
# __ 。 __ ListAdminView get_context , , 。
def get_context(self, __):
context = {'hello_target': 'World!!'}
# AdminView ,
context.update(__())
return context
이로써 가입된 플러그인은
AdminView
방법에 대한 완전한 제어를 실현하였다.템플릿 플러그인
우리는 Django의 완전한 View는 템플릿을 포함하고, 템플릿은 View가 최종적으로 되돌아오는 HTML 내용을 생성하는 데 사용된다는 것을 알고 있습니다.물론 플러그인도 템플릿에 자신의 내용을 삽입할 수 있다.구체적으로 어떻게 실현되는지 봅시다.
먼저 Xadmin의 템플릿 코드 예제 세션(change list.html)을 살펴보겠습니다.
{% load xadmin %}
...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.