Django 분석에서 관리자 명령을 사용자 정의하는 방법

2820 단어 django
우리는 모두 Django의 관리자를 사용한 적이 있다.py의 명령, 관리자.py는 Django 프로젝트를 만들 때 루트 디렉터리에 자동으로 생성되는 명령줄 도구입니다. 간단한 명령을 실행할 수 있습니다. 이 기능은 Django 프로젝트를 sys에 배치하는 것입니다.path 디렉토리에서 DJANGO 설정SETTINGS_MODULE 환경 변수는 현재 프로젝트의 setting입니다.py 파일.코드를 살펴보겠습니다.
#!/usr/bin/env python

import os

import sys



if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SNCRM.settings")



    from django.core.management import execute_from_command_line



    execute_from_command_line(sys.argv)

여기서 스크립트는 excute에 따라...from_command_라인 () 방법에 입력된 명령으로 해당하는 결과를 실행합니다.즉, 우리는 이 함수가 식별할 수 있는 명령을 스스로 작성할 수 있기 때문에 어느 정도에 관리자를 확대할 수 있다.py의 기능이 생겼다.
그러면 우리는 어떻게 사용자 정의 관리자 명령을 써야 합니까?
우선, 우리는 apps 모듈에서 관리라는 모듈을 구축해야 Django가 우리의 명령을 자동으로 발견할 수 있다. 이렇게 하면 우리가 새로 구축한 관리 모듈에서 우리가 필요로 하는 명령을 만들 수 있다. 물론 모든py 파일 시스템이 명령으로 식별되는 것은 아니다.BaseCommand를 인용해야만 정확하게 식별될 수 있고 우리의 명령 종류는BaseCommand에 계승되어야 한다.다음은 코드로 설명하겠습니다.
#django command import

from django.core.management.base import BaseCommand



class Command(BaseCommand):

    def handle(self, *args, **options):

          print 'hello, World !'

이것은 가장 기본적인 명령이다. 사용할 때 우리는 관리자만 있으면 된다.py 뒤에 명령의 파일 이름을 입력하면 됩니다.
물론 위의 예는 가장 간단한 예이다. 일반적으로 프로젝트를 초기화할 때 이 기능을 사용하기 때문에 우리의 스크립트는 데이터베이스에 대한 조작이다. 특히 우리의 프로젝트가 제3자의 ORM 프레임워크를 사용할 때 이 기능이 특히 중요하다. 왜냐하면 Django의syncdb 명령은 제3자의 ORM을 초기화할 수 없고 Django가 자체로 가지고 있는 ORM을 초기화할 수 있기 때문이다.그래서 저는 SQLAlchemy와 같은 다른 ORM을 사용할 때 이 기능을 자주 사용합니다. 여기에 기록합니다.

좋은 웹페이지 즐겨찾기