파이썬 일흔두번째 티안, 관리자 소스 코드 분석

장고는 소스 코드 분석을 초기 설정

오브젝트의 설정을 확인할 소스 도입 Settingso 모듈 생성 실시 LazySettings의 클래스의 단일 인스턴스
내부 _setup의 LazySettings 인스턴스화 이후에 기능을 갈


importlib 액션 모듈 : 문자열의 형태로 도입 모듈, 모듈의 네임 스페이스 이름에 액세스 얻을
모듈 = imporlib.import_module를 ( '문자열')


설정을 사용자 정의 원리를 구성 :
프로젝트가 시작되면 os.environ.settdefault 사용합니다 ( 'XXX'를, 'conf.settings ') 큰 글로벌 사전 운영 체제를 설정이 사용자의 설정 파일의 경로에 노출 된 장소는
로드됩니다 사용자가 구성되어있는 경우 글로벌 구성하고 사용자 프로파일을로드하고, 글로벌 구성 떨어져 위로한다.
항목은 사용자 정의 설정 내부 기능 구성을 구현하는 기본 구성을 설정하지 않습니다
다음, 먼저 모듈의 형태로 모든 문자열의 이름 목록을 얻을 디렉토리 (글로벌 구성 모듈)을 사용하여 루프 구성을 기본값으로 이름 판사는,
구성을 사용자 정의 할 경우, 변수 이름은 대문자로해야하기 때문에, 라인 필터에 의해, 그래서 키 - 값 쌍의 형태로 않은 setattr 개체를 사용하여 저장된 구성 설정의 요구 사항을 충족
운영 체제에서 다음 글로벌 큰 사전에서를, 문자열 수입 모듈로 import_module 경로를 사용하여 사용자에게 노출 전역 설정 파일 경로 얻는 사전
루프 용 모듈은, 모든 키 - 값 쌍의 형태를 유지하기 위해, 노출되어있는 사용자의 프로파일을 획득하도록 배열 설정에 반대

 

장고 사용자 설정 사용자 정의 구성 설정의 사용에 대한 구성을 달성하기 위해, 사용자가의 장고 전역 설정을 사용하도록 구성되지 않은
세 가지 수입 모듈을 발생 :
1. 모듈의 네임 스페이스 작업을 만들기
가져온 모듈을 만들고 2 모듈 이름 공간, 모든 코드 모듈은이 이름 공간에서 완전히 생성 이름 실행
실행 후 파일 이름을 생성하는 3 모듈의 지점 이름 공간에 도입



관리 다섯 구성 파라미터
는 사용자가 자기 않을 때 상기 방법을 정의 할 때. 관리자는 기본 ModelAdmin을 사용합니다. 사용자 정의 된 방법은, 사용자 정의 방식 사용하면
list_display를 = '필드 이름'] 제어 관리 페이지에서 (컨트롤 디스플레이 필드) 디스플레이 필드

list_display_links는 = '필드 이름'은 상기 경력으로 스크리닝 할 수있다 필드. (제어 필드 점프)

쿼리 "OR"(또는 질의) 인 경우, 라인을 통해 search_fields = '필드 이름'] 쿼리 필드 이름에 대한 조회를

list_filter = "외래 키 필드 이름 '] 오른쪽 측 필터 외래 키 필드는 필드에 이상이있는 경우, 하나 개의 필터를 질의 할 수있다 (해당 데이터에 대해 스크리닝되고, 내부에 추가
필터에있는 "그리고"할 때, 여러 분야에 많은 추가 될 수있다 이러한 기록 된 책의 스크리닝 및 동작) 다음에 제 스크리닝 관계 이름으로



# 배치 값을 수정. queryset_update (필드 이름 = '새로운 가치')에 지정된 값을 선택할 수 있습니다 필드 변경
DEF의 path_init (자체, 요청, 검색어 세트) :
queryset.update를 (. 가격 = 666)
path_init.short_description = '가격 대량 편집'
조치 = [path_init]


개념 클래스 구성


관리자 소스 코드 분석
장고 앱 응용 프로그램의 각 파일에 대해 수행 admin.py 순차적으로 시작됩니다
수입 __all__ 방법의 시간에 실행되는 모듈. 파일을 가져올 때. 모든 이름을 사용할 수 있습니다

 

함수 정의 이하 # 오기 모듈. 장고 함수가 실행될 때마다 결정이 활성화됩니다, 그것은 admin.py 파일에서 각 응용 프로그램을 찾고 갈 것
가져 오기 autodiscover_modules이 django.utils.module_loading에서
DEF) (자동 탐지 :
autodiscover_modules ( 'ADMIN', register_to = 사이트) # 경우] 다른 대체 '관리자'는, 다른 하나는 실행됩니다.



하나를 달성하는 방법의 예


1. classmethod 기준
2. 기준 장식
__call__에 기초한 메타 클래스 3.
4. 기준 __new__은
제 모듈 기반



추천

출처www.cnblogs.com/liguodeboke/p/11280323.html