python 장고 예제

Real Python의 마이그레이션 프라이머는 South의 마이그레이션과 내장 된 Django 1.7 마이그레이션의 차이점과 이를 사용하는 방법을 살펴봅합니다. 장고는 “배터리 포함”철학을 가진 널리 사용되는 파이썬 웹 응용 프로그램 프레임 워크입니다. 배터리포함의 원리는 웹 응용 프로그램을 빌드하기 위한 일반적인 기능이 별도의 라이브러리가 아닌 프레임워크와 함께 제공되어야 한다는 것입니다. 장고와 함께, 그들은 파이썬 기능의 전체 범위뿐만 아니라, 그것의 대부분을 했다. 장고가 사용하는 패턴을 MVT(모델 뷰-템플릿) 패턴이라고 합니다. MVT 패턴의 뷰와 템플릿은 MVC 패턴의 뷰를 구성합니다. 뷰를 매핑하기 위해 URL 구성을 추가하고 나머지 를 처리하는 장고만 있으면 됩니다! 각 프로젝트에 대한 모든 정보에 100개의 다른 부트스트랩 카드와 하드 코드를 만들 필요는 없습니다. 대신, 우리는 Django 템플릿 엔진의 기능을 사용 하려고: 루프에 대 한. 이 명령은 작업 디렉토리에 폴더 venv를 만듭니다. 이 디렉토리 안에는 Python 표준 라이브러리의 복사본을 포함한 여러 파일이 있습니다. 나중에 새 종속성을 설치하면 이 디렉터리에도 저장됩니다. 다음으로, 다음 명령을 실행 하 여 가상 환경을 활성화 해야: Django 테스트를 시작 하면 어디서부터 시작 해야 할지 불확실 한 경우 Django 프로젝트 테스트지연을 중지 하는 데 도움이 됩니다. 나는 항상 시도하고 “여기에 발명되지”와 “여기에 발명하지”사이에 어딘가에 착륙.

그래서 먼저, 나는 배지장고 응용 프로그램에 대한 인터넷을 스캔합니다. 나는 2, 3 년 전부터 “이것도 작동합니까?”와 같은 문제와 함께, 끔찍하게 오래되고 버려진 것을 발견합니다. 그런 다음, 더 유망한 보이는 또 다른. 유망한 옵션의 소스를 읽은 후 나는 보일러 플레이트가 많고 실제 물질이 없는 것을 발견했습니다. URL의 pk 값은 뷰 함수에 전달된 것과 동일한 pk이므로 보려는 프로젝트에 따라 이러한 URL을 동적으로 생성해야 합니다. 이렇게 하려면 표기어를 사용했습니다. 이것은 단지 URL에 전달된 값이 정수이고 변수 이름이 pk임을 장고에게 알려줍니다. 장고에서는 건축이 약간 다릅니다. MVC 패턴을 기반으로 하지만 장고는 컨트롤러 부품 자체를 처리합니다. 데이터베이스와 뷰가 상호 작용하는 방식을 정의할 필요가 없습니다. 그것은 모두 당신을 위해 이루어집니다! 포스트 모델의 마지막 필드는 가장 흥미롭습니다.

우리는 많은 카테고리가 많은 게시물에 할당 될 수있는 방식으로 카테고리와 게시물에 대한 우리의 모델을 연결하고 싶습니다. 다행히도, 장고는 ManytoManyField 필드 유형을 제공하여 우리를 위해이 쉽게. 이 필드는 Post 및 범주 모델을 연결하며 두 테이블 간의 관계를 만들 수 있습니다. 장고는 ORM(객체 관계-매퍼)을 사용하여 Django 코드의 모델 정의를 기본 데이터베이스에서 사용하는 데이터 구조에 매핑합니다. 모델 정의를 변경하면 Django는 변경 사항을 추적하고 데이터베이스 마이그레이션 스크립트(/locallibrary/카탈로그/마이그레이션/)를 만들어 모델과 일치하도록 데이터베이스의 기본 데이터 구조를 자동으로 마이그레이션할 수 있습니다. 참고 : 이미 다른 많이 설치 _APPS (및 미들웨어, 설정 파일에서 더 아래로)가 있음을 알 수 있습니다. 이를 통해 Django 관리 사이트를 지원하고 결과적으로 세션, 인증 등에서 사용하는 많은 기능을 사용할 수 있습니다. 데이터베이스를 만드는 프로세스를 시작하려면 마이그레이션을 만들어야 합니다. 마이그레이션은 Django에 데이터베이스에 필요한 변경 사항을 알려주는 규칙이 있는 마이그레이션 클래스를 포함하는 파일입니다. 마이그레이션을 만들려면 콘솔에 다음 명령을 입력하여 rp 포트폴리오 디렉터리에 있는지 확인합니다: Django 프로젝트의 안정성, 성능 및 커뮤니티는 프레임워크가 생성된 이후 지난 10년 동안 엄청나게 성장했습니다.

자세한 자습서 및 모범 사례는 웹과 책에서 쉽게 사용할 수 있습니다. 프레임워크는 각 릴리스에서 데이터베이스 마이그레이션과 같은 중요한 새 기능을 계속 추가합니다.