我的Django應用程序的文件「views.py」現在有超過4000行代碼,並且每次都難以向下滾動到我的文本編輯器中的特定視圖。是否可以在Django的多個文件中編寫我的視圖?
我想將這個文件分成多個。
這可行嗎?我想我的「urls.py」會相應地改變。我仍然需要保留我的「views.py」文件嗎?
我的Django應用程序的文件「views.py」現在有超過4000行代碼,並且每次都難以向下滾動到我的文本編輯器中的特定視圖。是否可以在Django的多個文件中編寫我的視圖?
我想將這個文件分成多個。
這可行嗎?我想我的「urls.py」會相應地改變。我仍然需要保留我的「views.py」文件嗎?
與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'),
當然,你可以分開你的意見。你不必改變你的網址。只需導入其他文件,原始視圖文件將繼承其他文件中的所有內容。
#views.py
from app.other_view import *
def your_view(request):
#your code here
#other_view.py
def your_view(request):
#your code here
如果你打算使用通配符導入,在另一個視圖中將它與指定'__all__'結合起來很重要。否則,最終會導致命名空間污染。更好的是,不要使用通配符導入,而只是明確列出要導入的所有內容。 –
有辦法,打破了默認views.py,models.py等文件到應用程序中自己的模塊,但我發現這通常最終創造更多的問題比它解決的。
一般來說,如果你發現文件太重了,反而可能更好地利用你的時間來重構你的代碼。你真的需要所有這些意見嗎?有什麼方法可以簡化邏輯?將功能分解爲完全獨立的應用程序,您會受益嗎?這些是你應該問的問題。
您的問題已被正確回答[在此線程中](http://stackoverflow.com/questions/2675722/django-breaking-up-views)。 – pemistahl