2012-01-19 28 views
0

我的Django應用程序的文件「views.py」現在有超過4000行代碼,並且每次都難以向下滾動到我的文本編輯器中的特定視圖。是否可以在Django的多個文件中編寫我的視圖?

我想將這個文件分成多個。

這可行嗎?我想我的「urls.py」會相應地改變。我仍然需要保留我的「views.py」文件嗎?

+1

您的問題已被正確回答[在此線程中](http://stackoverflow.com/questions/2675722/django-breaking-up-views)。 – pemistahl

回答

8

models.py不同,Django中的views.py文件沒有什麼神奇的。視圖只是一個由URLconf引用的函數,它可以放在任何模塊中。只要確保你提到它正確,要麼給出全部模塊爲文本,使用前綴,或將其導入:

urls = patterns('', 
    (r'url1', 'app.views1.my_view1'), 
    (r'url2', 'app.views2.my_view2') 
    ... 

from app import views1, views2 
urls = patterns('', 
    (r'url1', views1.my_view1), 
    (r'url2', views2.my_view2) 
    ... 

甚至:

urls = patterns('app.views1', 
    (r'url1', 'my_view1'), 
urls += patterns('app.views2', 
    (r'url2', 'my_view2'), 
4

當然,你可以分開你的意見。你不必改變你的網址。只需導入其他文件,原始視圖文件將繼承其他文件中的所有內容。

#views.py 
from app.other_view import * 

def your_view(request): 
    #your code here 


#other_view.py 
def your_view(request): 
    #your code here 
+2

如果你打算使用通配符導入,在另一個視圖中將它與指定'__all__'結合起來很重要。否則,最終會導致命名空間污染。更好的是,不要使用通配符導入,而只是明確列出要導入的所有內容。 –

0

有辦法,打破了默認views.py,models.py等文件到應用程序中自己的模塊,但我發現這通常最終創造更多的問題比它解決的。

一般來說,如果你發現文件太重了,反而可能更好地利用你的時間來重構你的代碼。你真的需要所有這些意見嗎?有什麼方法可以簡化邏輯?將功能分解爲完全獨立的應用程序,您會受益嗎?這些是你應該問的問題。

相關問題