2011-04-28 3 views
4

장고에서는 urls.py에서 여러 번 가져 오기를 할 수 있습니까? 나는 커플 중 하나 사용하지 않는장고 가져 오기보기 urls.py에서 여러 번

from mysite.books import views 
from mysite.contact import views 

urlpatterns = patterns('', 
    (r'^contact/$', views.contact), 
    (r'^search/$', views.search), 
) 

그러나 서버가 오류를 표시합니다

예를 들어, 나는 urls.py에서 다음과 같은 코드가 있습니다. 그래서 내 질문은 세 가지 있습니다 :

1) 여러 가져 오기보기 문을 가질 수 있습니까? 2)이 문제를 해결하는 방법? 3) 모든 views.py를 넣을 위치는 무엇입니까? 하나의 파일? 여러 파일?

감사합니다.

+0

Btw, 오류가 발생 했습니까? – Paolo

+0

이것은 장고가 아니고 파이썬입니다! – vad

+0

이것은 단순히 이름 지정 문제입니다. 두 명의 아이에게 같은 이름을 부여해도 그 중 하나를 부르고 싶다면, 어떻게 차이를 만들지 모릅니다. 파이썬도 똑같이,이 경우에는 정의한 두 번째'views'를 사용합니다 (첫 번째를 덮어 씁니다). –

답변

15

1) 그렇습니다.

2)

from mysite.books import views as books_views 
from mysite.contact import views as contact_views 

urlpatterns = patterns('', 
    (r'^contact/$', contact_views.contact), 
    (r'^search/$', books_views.search), 
) 

3) Per Django docs "이 코드는 한 그것은 당신의 파이썬 경로의로, 원하는 어디서든 살 수 있습니다.". 모든 앱 조회수를 유지합니다. app/views.py

6

원하는만큼 많은 것을 가져올 수 있지만 개체의 고유 한 이름을 사용해야 만 구분할 수 있습니다.

이 문제를 처리하는 데는 몇 가지 방법이 있습니다. 하나는 단순히 모듈이 아닌 함수를 가져 오는 것입니다.

각 파일에 하나 또는 두 개의보기 만있는 경우에만이 기능이 유용합니다. 두 번째 옵션은 다른 이름으로 모듈을 가져 오는 것입니다 :

from mysite.books import views as books_views 
from mysite.contact import views as contact_views 

에서 모든 뷰를 가져올 수 있지만, 문자열을 사용하지 않는 것입니다 세 번째 옵션은 그들에게 참조합니다 :

urlpatterns = patterns('', 
    (r'^contact/$', 'contact.views.contact'), 
    (r'^search/$', 'book.views.search'), 
) 

네 번째가있다 각 응용 프로그램에 대해 별도의 urls.py를 갖고 있으며 기본 urls.py에 urlconfs를 포함하십시오.

+0

종합적인 답변을 주셔서 감사합니다. "각 파일에 하나 또는 두 개의보기 만 있으면 분명히 좋은 것입니다"라는 의미는 무엇입니까? 이 방법을 사용하여 많은 수의 뷰를 갖는 단점은 무엇입니까? – David542

+0

모든 항목을 개별적으로 가져와야합니다. –

1

나는 또 다른 옵션이 될 것이라고 생각한다

urlpatterns = patterns('mysite.books.views', 
    (r'^contact/$, 'contact'), 
) 
urlpatterns += patterns('mysite.contact.views', 
    (r'^search/$, 'search'), 
) 

djangobook에 설명 된대로.