2010-06-07 4 views
5

장고 자습서를 읽었으며 모든 뷰 기능이 "views.py"라는 파일에 있어야하고 모든 모델이 "models.py"에 있어야합니다. view.py 파일에 많은 뷰 함수가 생길지 모르고, models.py에서도 마찬가지입니다.django app organization

내 장고 앱에 대한 이해가 정확합니까?

장고 앱을 사용하면 일반적인 기능을 여러 앱으로 분리하고보기 및 모델의 파일 ​​크기를 최소한으로 유지할 수 있습니다. 예 : 내 프로젝트에는 요리법 (만들기, 업데이트,보기 및 검색) 용 앱과 친구 앱, 댓글 앱 등이 포함될 수 있습니다.

일부보기 기능을 다른 파일로 옮길 수 있습니까? 그래서 나는 하나의 파일에 CRUD만을 가지고 있습니까?

답변

7

먼저 큰 파일은 파이썬에서 매우 일반적입니다. 파이썬은 파일 당 하나의 클래스를 가진 java가 아니라 파일 당 하나의 모듈을 가지고 있습니다.

다음으로 views은 표준으로 사용되는 경우에도 파이썬 모듈입니다. 모듈은 단일 파일 일 필요는 없습니다. 많은 파일이 들어있는 디렉토리가 될 수 있으며 __init__.py

그리고 나서 views.py은 규칙입니다. , 응용 프로그램 프로그래머가이를 참조하고 있으며 django 자체는 아무 것도 참조하지 않습니다. 따라서 많은 파일에 자유롭게 입력 할 수 있으며 적절한 기능을 전달할 수 있습니다. 요청은에있는 urls.py

+2

실은 최상의 답변입니다. view.py 또는 views 패키지를 찾는 것과 같이 다른 장고 개발자가 앱에 대한 특정 기대치를 갖게됩니다. Django 경로에서 다른 개발자가 어떤 시점에서 코드를 유지하기를 기대한다면 미쳐 버리지 마십시오. – cethegeek

1

그들은 views.py에 들어갈 필요가 없습니다. 그들은 거기에서 참조되어야합니다.

다른 파일을 포함 할 수 있습니다. 따라서 필요하다고 생각되면보기 기능이 포함 된 다른 파일을 하나의 앱에서 만들고 views.py에 포함하면됩니다.

동일한 내용이 models.py에 적용됩니다.

장고 애플 리케이션은 우리가 다른 응용 프로그램에 공통 기능을 분리하는 는 최소 뷰와 모델 의 파일 크기를 유지할 수 있습니다? 예 : 내 프로젝트 에는 요리법 (만들기, 업데이트,보기 및 검색) 용 앱과 친구 앱, 댓글 앱 및 이 포함될 수 있습니다.

"최소한의"부분에 대해서는 잘 모릅니다. 일부 앱은보기가 크고 모델은 큰 것입니다. 일을 잘 분할하려고 노력해야하지만 때로는 많은 코드가있는 경우가 있습니다. 하지만 그 외에는 Django 앱의 공정한 요약입니다. 그렇습니다.

+0

"보기"디렉토리를 만들고 다른보기에 내보기 기능을 저장할 수있는 방법을 알 수 있습니다. 나는 모델을 가지고 어떻게 똑같이 할 수 있는지 모르겠다. 보기를 분리하기 위해 usrls.py 디렉토리에서 사용하는 views 디렉토리를 만들었습니다. – iJK

0

question에 대한 답변이 도움이 될 수 있습니다.

1

나는 또한 매우 긴 파일을 싫어한다.당신은 다른 답변에서 읽은 것을 물론

사실이지만 나는 아주 멋진 파이썬 등가 악용 :

views.py 

views/__init__.py 

거의 기능적으로 동일을 - 내 말은 그로 양쪽 모두에 def my_view()이 포함 된 경우

from views import my_view 

두 경우 모두!

거기에서 그것은 작은 것들로 긴 파일의 구조를 쉽게, 아직 모든 장고 개발자가 사용하는 이름 지정 규칙을 유지 : __init__.py

views/__init__.py 
views/largemodel_view.py 

한 다음 largemodel_view.py에서보기를 가져올 것을 잊지 마세요 .

class MyModel(models.Model): 
    ... 

    class Meta: 
     app_name = 'yourappname' 

장고는 관리자를위한 마술 그렇지 않으면를 선택하지 않을 것이다 (하지만 여전히로드하기 때문에, 감사 : 당신이 Meta.app_name을 설정하기 위해 기억해야하지만 많은 응용 프로그램과

나는 모델로 동일한 작업을 수행 ! 파이썬)

그래서 내 애플 리케이션은 일반적으로 같은 찾고 결국 :

project/settings/__init__.py 
       /..othersettings.. 
     /app_1/models/__init__.py 
        /... 
      /views/__init__.py 
        /... 
      /templates/ 
      /static/ 
      urls.py 
     /urls.py 

등을

물론 제한이 없습니다 (URL도 나눌 수 있습니다. etc)