수색…


소개

관리 명령은 Django 프로젝트 또는 기본 데이터베이스에서 작업을 수행 할 수있는 강력하고 유연한 스크립트입니다. 다양한 기본 명령 이외에 직접 작성할 수도 있습니다!

일반 Python 스크립트와 비교하여 관리 명령 프레임 워크를 사용하면 지루한 설정 작업이 자동으로 수행됩니다.

비고

관리 명령은 다음 위치에서 호출 할 수 있습니다.

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] manage.py에 실행 권한이있는 경우 ( chmod +x manage.py )

Cron에서 관리 명령을 사용하려면 다음을 수행하십시오.

*/10 * * * * pythonuser /var/www/dev/env/bin/python /var/www/dev/manage.py <command> [options] > /dev/null

관리 명령 작성 및 실행

명령 줄이나 다른 서비스 (사용자 / 요청이 사용되지 않는 곳)를 사용하여 장고에서 작업을 수행하려면 management commands 사용할 수 있습니다.

필요에 따라 Django 모듈을 가져올 수 있습니다.

각 명령에 대해 별도의 파일을 작성해야합니다. myapp/management/commands/my_command.py
managementcommands 디렉토리에는 빈 __init__.py 파일이 있어야합니다.

from django.core.management.base import BaseCommand, CommandError

# import additional classes/modules as needed
# from myapp.models import Book

class Command(BaseCommand):
    help = 'My custom django management command'

    def add_arguments(self, parser):
       parser.add_argument('book_id', nargs='+', type=int)
       parser.add_argument('author' , nargs='+', type=str)

    def handle(self, *args, **options):
       bookid = options['book_id'] 
       author = options['author']
       # Your code goes here
        
        # For example:
        # books = Book.objects.filter(author="bob")
        # for book in books:
        #    book.name = "Bob"
        #    book.save()

클래스 명 CommandBaseCommand 또는 그 서브 클래스 중 하나를 확장하는 필수 항목입니다.

관리 명령의 이름은이를 포함하는 파일의 이름입니다. 위의 예제에서 명령을 실행하려면 프로젝트 디렉토리에서 다음을 사용하십시오.

python manage.py my_command

명령을 시작하는 데는 (모듈 가져 오기 때문에) 몇 초가 걸릴 수 있습니다. 따라서 어떤 경우에는 management commands 대신 daemon 프로세스를 작성하는 것이 좋습니다.

관리 명령에 대한 추가 정보

기존 명령 목록 가져 오기

다음과 같은 방법으로 사용 가능한 명령 목록을 얻을 수 있습니다.

>>> python manage.py help

명령을 이해할 수 없거나 선택적 인수를 찾으려면 다음과 같이 -h 인수를 사용할 수 있습니다.

>>> python manage.py command_name -h

여기서 command_name은 원하는 명령 이름입니다. 명령에서 도움말 텍스트가 표시됩니다.

>>> python manage.py runserver -h          
>>> usage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]
                           [--settings SETTINGS] [--pythonpath PYTHONPATH]
                           [--traceback] [--no-color] [--ipv6] [--nothreading]
                           [--noreload] [--nostatic] [--insecure]
                           [addrport]

Starts a lightweight Web server for development and also serves static files.

positional arguments:
  addrport              Optional port number, or ipaddr:port

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v {0,1,2,3}, --verbosity {0,1,2,3}
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on CommandError exceptions
  --no-color            Don't colorize the command output.
  --ipv6, -6            Tells Django to use an IPv6 address.
  --nothreading         Tells Django to NOT use threading.
  --noreload            Tells Django to NOT use the auto-reloader.
  --nostatic            Tells Django to NOT automatically serve static files
                        at STATIC_URL.
  --insecure            Allows serving static files even if DEBUG is False.

사용 가능한 명령 목록

manage.py 대신 django-admin 사용

manage.py 없애고 대신 django-admin 명령을 사용할 수 있습니다. 그렇게하려면 manage.py 가 수동으로 수행해야하는 작업을 수행해야합니다.

  • PYTHONPATH에 프로젝트 경로 추가
  • DJANGO_SETTINGS_MODULE을 설정하십시오.
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

이는 postactivate 스크립트에서 이러한 환경 변수를 설정할 수있는 virtualenv 에서 특히 유용합니다.

django-admin 명령은 파일 시스템에있는 모든 곳에서 사용할 수 있다는 장점이 있습니다.

내장 관리 명령

Django는 python manage.py [command] 하거나 manage.py가 + x (실행 가능) 권한을 가지고있을 때 ./manage.py [command] 사용하여 여러 가지 기본 관리 명령을 제공합니다. 다음은 가장 많이 사용되는 몇 가지 예입니다.

사용 가능한 모든 명령 목록 가져 오기

./manage.py help

로컬 호스트에서 Django 서버를 실행하십시오 : 8000; 로컬 테스트에 필수

./manage.py runserver

프로젝트의 장고 설정이 미리로드 된 python (또는 설치된 경우 ipython) 콘솔을 실행하십시오 (이 작업을 수행하지 않고 파이썬 터미널에서 프로젝트의 일부에 액세스하려고하면 실패합니다).

./manage.py shell

모델에 대한 변경 사항에 따라 새 데이터베이스 이주 파일을 작성하십시오. 마이그레이션 참조

./manage.py makemigrations

적용되지 않은 마이그레이션을 현재 데이터베이스에 적용하십시오.

./manage.py migrate

프로젝트의 테스트 스위트를 실행하십시오. 단위 테스트를 참조하십시오.

./manage.py test

프로젝트의 모든 정적 파일을 가져 STATIC_ROOT 지정된 폴더에 STATIC_ROOT 하면 프로덕션 환경에서 제공 될 수 있습니다.

./manage.py collectstatic

수퍼 유저를 만들 수 있습니다.

./manage.py createsuperuser

지정된 사용자의 암호를 변경하십시오.

./manage.py changepassword username

사용 가능한 명령의 전체 목록



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow