2012-05-04 6 views
0

나는 큰 views.py 파일을 가지고 있으므로 views.pyadmin_views.py으로 나눕니다.큰 views.py를 더 작은 조각으로 나누기

# views.py 
from admin_views.py import a,b,c 

# admin_views.py 
from views.py import d,e,f 

나는이 순환 종속성을 초래하고, 수입은 작동하지 않습니다 발견 : 기능이 다른 파일에 기능에 의존하는 경향이 있기 때문에, 나는 다음과 같은했다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 파일 맨 아래에 import 문을 넣을 수는 있지만 너무 우아하지는 않습니다.

답변

0

먼저보기 패키지를 만듭니다. 그들이 base에서 모두를 가져올 수 있도록

--view 
    |_ __init__.py 
    |_ main.py 
    |_ admin.py 
    |_ base.py 

는 그런 수입을 이동 :

--view 
    |_ __init__.py 
    |_ main.py # previewsly view.py 
    |_ admin.py # previewsly view_admin.py 

그런 다음, 당신이 main 또는 admin에서 가져와야하는 부분을 포함하는 새로운 파일을 추가 할 수 있습니다.

결국 __init__에서 main et admin에서 필요한 항목을 가져옵니다. __init__에서 가져 오는 모든 항목은 가져 오기보기에서 가져 오기를 사용할 수 있습니다.

+0

쿨! 그래서'base.py'는'main.py'와'admin.py' 둘 다에서 물건을 가져오고 있습니까? 'main.py'에서'base.py'를 가져올 때 순환 의존성을 생성하지 않습니까? 어떻게해야합니까? 죄송합니다, 아마도 귀하의 설명을 잘 이해하지 못했을 것입니다 – Alexandre

+0

"그런 다음 가져 오기를 이동하여 둘 다 FROM 기본을 가져옵니다." 공통 코드는 기본으로 있어야합니다. –

0

views.py 파일에 핵심 로직이 없어야합니다. 이 핵심 로직을 다른 파이썬 파일에 두어야합니다 (일부 로직은 models.py 또는 forms.py에 적합합니다). 그리고 그것을 views.py로 가져와야합니다. 기본적으로 view.py 파일을 가져 오는 유일한 장소는 urls.py 파일입니다. views.py 기능이 기본적으로 어디서든 수입 할 필요가 없다 결코 있도록

urlpatterns = patterns('management.views', 
    #url(r'^index/$', direct_to_template, {'template': 'stats/index.html'}, 
    # name="index"),   
    url(r'^pay_invoices/$', 'pay_invoices', name='pay_invoices'), 
) 

이 그것을 만들어 다음 urls.py 파일은 같은 형식 일 수 있습니다.

0

순환 가져 오기는 외래 키 관계와 관련이 있습니까?

그렇다면 클래스를 문자열로 정의 할 수 있습니다.

item = models.ForeignKey("SomeOtherClass") 

나는 보통 e-satis와 같이 세 번째 파일에 논리를 추출하지 못했습니다.

관련 문제