是否可以在Django中的多个文件中编写我的视图?

时间:2012-01-19 16:35:25

标签: django django-views

我的Django应用程序的文件“views.py”现在有超过4000行代码,而且每次都很难向下滚动到我的文本编辑器中的特定视图。

我想将此文件分成多个文件。

这可行吗?我想我的“urls.py”会相应改变。我还需要保留“views.py”文件吗?

3 个答案:

答案 0 :(得分: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'),

答案 1 :(得分: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 :(得分:0)

有一些方法可以将默认的views.py,models.py等文件分解为应用程序中自己的模块,但我发现这通常会产生比解决的问题更多的问题。

通常情况下,如果您发现文件太重,那么可能更好地利用您的时间来重构代码。你真的需要所有这些观点吗?有没有办法简化逻辑?您是否可以将功能分解为完全独立的应用程序?这些是你应该问的问题。