Django 애플리케이션: 2022년에 알아야 할 모든 것

게시 됨: 2021-01-04

Django는 웹 개발자를 위한 실용적인 디자인과 신속한 개발을 장려하는 전문가들이 만든 최고의 파이썬 프레임워크 중 하나입니다. 빠르고 안전하며 웹 개발자들 사이에서 인기가 있습니다. Django에는 구성을 저장하고 내부 검사를 제공하는 데 도움이 되는 응용 프로그램 레지스트리가 이미 설치되어 있습니다. 사용 가능한 모델의 포괄적인 목록을 유지 관리합니다. 레지스트리를 앱이라고 합니다. Django 애플리케이션은 'django.apps'에서 사용할 수 있습니다.

>>> django.apps에서 앱 가져오기

>>> apps.get_app_config('admin').verbose_name

'관리'

목차

장고 프로젝트

모든 Django 애플리케이션을 프로젝트라고 할 수 있습니다. 설정 모듈에 의해 정의됩니다. 그러나 여기에는 다른 몇 가지 사항도 포함되어 있습니다. 예를 들어 django-admin startproject mysite 를 실행 하면 mysite 프로젝트 디렉토리가 생성됩니다. 여기에는 setting.py, urls.py, asgi.py wsgi.py 가 있는 mysite Python 패키지가 포함됩니다 . 패키지는 CSS, 고정 장치 및 특정 응용 프로그램과 연관되지 않은 기타 템플릿을 포함하도록 확장될 수 있습니다.

프로젝트의 루트 디렉터리 또는 manage.py 가 있는 디렉터리 에는 일반적으로 별도로 설치되지 않은 모든 프로젝트의 응용 프로그램이 포함됩니다.

장고 애플리케이션

응용 프로그램은 몇 가지 기능이 포함된 Python 패키지를 의미합니다. 여러 프로젝트에서 재사용할 수 있습니다. 애플리케이션은 보기, 모델, 템플릿 URL, 정적 파일 등의 조합일 수 있습니다. 이들은 종종 INSTALLED-APPS 설정이 있는 프로젝트에 연결됩니다. 종종 MIDDLEWARE 설정인 URLconf와 같은 다른 메커니즘과 선택적으로 연결될 수 있습니다.

읽기: 인도의 Django 개발자 급여

Django 애플리케이션은 특정 프레임워크의 여러 부분과 상호작용을 생성하는 코드 세트입니다. Application 개체가 없습니다. 때때로 Django는 내부 검사 또는 구성을 위해 특정 응용 프로그램과 상호 작용해야 할 수 있습니다. 따라서 설치된 애플리케이션에 대한 메타데이터가 AppConfig 에 있습니다. 프로젝트 패키지는 응용 프로그램으로 간주될 수도 있으며 모델도 포함할 수 있습니다.

Django 애플리케이션 구성

애플리케이션을 구성하려면 AppConfig 를 서브클래스화한 다음 INSTALLED_Apps 에 점선을 추가해야 합니다 . 점선이 표시되면 Django는 default_app_config 변수를 확인하기 시작합니다. 일단 정의되면 해당 특정 애플리케이션에 대한 AppConfig 하위 클래스가 됩니다. default_app_config 가 만들어 지지 않으면 Django는 기본 AppConfig 클래스를 사용합니다.

또한 읽기: 전체 스택과 평균 스택의 차이점

Django 애플리케이션 작성자를 위해

'로큰롤' 플러그형 앱을 개발 중이라고 가정해 보겠습니다. 그런 다음 다음과 같은 방식으로 이름을 개발할 수 있습니다.

# rock_n_roll/apps.py

django.apps에서 AppConfig 가져오기

클래스 RockNRollConfig(AppConfig):

이름 = 'rock_n_roll'

verbose_name = "로큰롤"

다음을 사용하여 AppConfig 하위 클래스로 로드할 수도 있습니다.

# rock_n_roll/__init__.py

default_app_config = 'rock_n_roll.apps.RockNRolConfig'

따라서 RockNRollConfig는 설치된 앱에 'rock_n_roll'이 있을 때 사용할 수 있습니다. 사용자가 INSTALLED_APPS에서 업데이트하지 않고도 AppConfig의 기능을 사용하는 데 도움이 됩니다.

애플리케이션 사용자를 위해

앤솔로지라는 프로젝트에서 Rock 'n' Roll 응용 프로그램을 사용하고 있다고 가정해 보겠습니다. 이제 그 전에 Jazz Manouche로 나오길 원합니다. 따라서 다음 단계를 수행할 수 있습니다.

# 앤솔로지/apps.py

rock_n_roll.app에서 RockNRolConfig 가져오기

클래스 JazzManoucheConfig(RockNRollConfig):

verbose_name = "재즈 마누슈"

# 앤솔로지/settings.py

INSTALLED_APPS = [

'anthology.apps.JazzManoucheConfig',

# …

]

클래스 AppConfig

응용 프로그램의 메타데이터는 응용 프로그램 구성 개체에 저장됩니다. 이러한 속성 중 일부는 AppConfig 하위 클래스에서 구성되며 읽기 전용 또는 Django에 의해 설정됩니다.

구성 가능한 속성

앱 구성.이름

경로: django.contrib.admin

구성이 적용되는 애플리케이션을 정의하는 데 도움이 됩니다. AppConfig 하위 클래스에서 설정됩니다. Django 프로젝트에서 고유합니다.

AppConfig.label

이름: 관리자

특히 두 응용 프로그램에 충돌하는 레이블이 있는 경우 응용 프로그램 레이블을 다시 지정하는 데 도움이 됩니다. 기본적으로 이름의 마지막 구성 요소가 됩니다. Python의 유효한 식별자여야 합니다. Django 프로젝트에서 고유합니다.

AppConfig.verbose_name

이름: 관리

기본값: label.title()

앱 구성.경로

애플리케이션 디렉토리 예: '/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'

대부분의 경우 Django는 이를 자동으로 감지하고 설정할 수 있지만 AppConfig 하위 클래스를 통해 클래스 속성을 명시적으로 재정의할 수 있습니다.

읽기 전용 속성

앱 구성.모듈

루트 모듈 예: <'django/contrib/admin/__init__.py'의 'django.contrib.admin' 모듈>

AppConfig.models_module

모델이 있는 모듈 예: <'django/contrib/admin/models.py'의 'django.contrib.admin.models' 모듈>>

모델을 포함하지 않는 경우 None일 수도 있습니다.

행동 양식

AppConfig.get_models()

응용 프로그램에 대해 반복 가능한 모델 클래스를 반환하는 데 도움이 됩니다. 앱 레지스트리가 완전히 채워져야 합니다.

AppConfig.get_model

대소문자를 구분하지 않는 특정 모델을 반환합니다: model_name. 모델명

특정 모델이 없는 경우 LookupError를 발생시키는 데 도움이 됩니다. 앱 레지스트리가 완전히 채워져야 합니다.

AppConfig.ready()

메서드를 재정의하는 데 도움이 되므로 신호 등록과 같은 초기화 작업을 수행할 수 있습니다. 레지스트리가 완전히 채워지면 호출할 수 있습니다. 그러나 AppConfig의 클래스가 정의된 모듈 수준에서는 모델을 가져올 수 없습니다. 그러나 get_model() 또는 import 문을 사용하는 ready()에서 가져올 수 있습니다.

앱으로 사용되는 네임스페이스 패키지

Python 패키지에 __init__.py가 없으면 네임스페이스 패키지라고 합니다. sys.path의 여러 디렉토리와 위치에 퍼질 수 있습니다. Django 애플리케이션은 구성을 기반으로 하는 Django가 정적 자산, 템플릿 등을 찾는 서명 기반 파일 시스템이 필요합니다. 따라서 Django 애플리케이션은 다음 중 하나가 true인 경우에만 사용할 수 있습니다.

  • 네임스페이스 패키지에는 단일 위치가 있습니다.
  • 애플리케이션 구성에 사용되는 AppConfig 클래스에는 경로 클래스 속성이 있습니다.

어떤 조건도 충족되지 않으면 Django는 ImperlyConfigured를 표시합니다.

Django 애플리케이션 레지스트리

특정 공개 API는 애플리케이션 레지스트리에서 제공합니다. 다음은 몇 가지 방법이지만 변경될 수 있습니다.

앱스.레디

Boolean 속성이 True로 설정되고 레지스트리가 완전히 채워지면 모든 AppConfig.ready() 메서드가 호출됩니다.

apps.get_app_configs()

AppConfig 인스턴스의 iterable을 반환합니다.

apps.get_app_config(app_label)

주어진 app_label이 있는 애플리케이션에 대한 AppConfig를 반환합니다. 응용 프로그램이 없으면 LookupError가 발생합니다.

apps.is_installed( 현재 레지스트리에 지정된 애플리케이션의 이름이 존재하는지 확인합니다. app_name은 앱 전체 이름이 됩니다(예: django.contrib.admin).

apps.get_model( 주어진 model_name 및 app_label이 있는 모델을 반환합니다. 응용 프로그램이 없으면 LookupError가 발생합니다.

초기화 과정

이제 문제는 django 애플리케이션을 로드하는 방법입니다. Django가 시작되면 django.setup()이 레지스트리를 채웁니다.

설정( set_prefix=True )

Django 구성이 발생합니다.

  • 먼저 설정을 로드하여
  • 로그인 설정
  • set_prefix가 true이면 URL 리볼버 스크립트 접두사는 정의되거나 그렇지 않은 경우 FORCE_SCRIPT_NAME이 됩니다.
  • 응용 프로그램 레지스트리가 초기화됩니다.

함수의 자동 호출이 발생합니다.

  • HTTP 서버가 Django의 WSGI 지원을 통해 실행 중인 경우
  • 관리 명령이 호출될 때.

문제 해결

직면할 수 있는 몇 가지 일반적인 문제는 다음과 같습니다.

  • AppRegistryNotReady: 애플리케이션 구성 또는 모델 모듈을 가져오는 동안 발생하며 앱 레지스트리에 종속되지 않는 코드를 트리거합니다. ORM으로 데이터베이스 쿼리를 실행하면 이 문제가 발생할 수 있습니다.
  • ImportError: 이름을 가져올 수 없습니다 ... – 가져오기 시퀀스가 ​​루프로 끝날 때 발생합니다. 모델 모듈 간의 종속성을 최소화하여 프로세스를 제거할 수 있습니다.
  • Django.contrib.admin은 관리 모듈을 자동으로 검색합니다. INSTALLED_APPS를 django.contrib.admin에서 django.contrib.admin.apps.SimpleAdminConfig로 변경하여 방지합니다.

이제 웹 개발에 Django 애플리케이션을 쉽게 통합할 수 있기를 바랍니다.

세계 최고의 대학에서 소프트웨어 개발 과정받으십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

Django 및 기타 전체 스택 개발자 언어 및 도구에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육을 제공하는 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 Executive PG 프로그램을 확인하십시오. 9개 이상의 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

미래의 직업을 위한 준비

지금 소프트웨어 공학 석사 지원