2017-11-24 6 views
0

장고의 모듈성을 활용하고 내가 pip로 설치 한 외부 앱을 통합하고 싶습니다. 그러나 필자는 URL, 뷰, 모델을 통합하고 사용하거나 확장 할 수있는 방법을 이해하는 데 어려움을 겪고 있습니다. 이 주제에별로 관심이 없기 때문에 그 이유를 알 수 없습니다.Django : pip와 함께 설치된 앱을 사용하는 방법

는 이제 changuito-cart의 예를 보자 :

  1. 내가 루트에 "샹 귀토"라는 이름의 폴더를 생성하고 여기에 URL을/뷰를 만들거나 난 그냥 같은 이름의 새 응용 프로그램을 작성해야합니까?

  2. settings.py에서 설치된 앱 목록에 "changuito"를 추가했는데 "changuito '라는 모듈이 없습니다."오류가 발생했습니다. 올바르게 추가하려면 어떻게합니까?

  3. 통합하는 데 필요한 기본 단계는 무엇입니까?

답변

1

앱을 설치하고 INSTALLED_APPS에 추가 한 후에는 잘 가야합니다. INSTALLED_APPS에 추가해야하는 이름이 패키지 이름과 다른 경우가 있습니다. 이러한 경우는 문서에서 분명해야합니다. 그렇지 않으면 모듈 구조 자체를 살펴볼 필요가 있습니다. 귀하의 경우 패키지는 "django-changuito"라고하며 INSTALLED_APPS에 "changuito"를 포함시켜야합니다. 이 특정 패키지는 MIDDLEWARE_CLASSES 설정에 의존한다는 점도 알아 두십시오. 설명서를 읽으십시오!

올바른 가상 환경을 사용하는 경우 설치 중에 활성화해야합니다.

일반적으로 외부 앱 자체는 수정하지 않습니다. 이것은 상류와는 다르며 길을 무너 뜨리기 시작할 것이므로 매우 위험합니다. 외부 앱의 클래스를 하위 클래스로 만들거나 확장하려면 확장 또는 원숭이 패치 전에 클래스를 자신의 앱으로 가져와야합니다. 이 경우 다른 앱에 다른 클래스를 만듭니다.

마지막으로 일부 앱은 확장 템플릿을 허용합니다. Django는 먼저 프로젝트 구조에서 템플릿과 통계를 검색합니다. 외부 앱의 폴더 구조를 다시 만들고 새 템플릿을 정확한 위치에 배치하는 경우 장고는 이것을 사용할 것입니다.

+0

이 특정 예제에서 - changuito : INSTALLED_APPS 및 MIDDLEWARE에 추가했지만 changuito 폴더 안에 있지만 내 changuito.urls 모듈을 찾지 못했습니다. 나는 이것을 다음과 같이 사용했다 : url (r '^ cart', include ('changuito.urls')), –

+0

앱 폴더에 __init__.py 파일을 추가해야 할 것 같다. –

+0

네, init을 추가해야합니다. .py를 모듈로 인식해야하는 모든 폴더에 추가하십시오. –