Django的views.py文件拆分

  • 发布时间:2017年1月16日 11:09
  • 作者:杨仕航
  • 分类标签: Django
  • 阅读(14095)
  • 评论(0)

随着功能的开发,views.py文件的代码会越来越多。

我的Blog应用的views.py已经20条引用、15个方法、500多行代码。

20170116/20170116093527463.png

整个文件看起来比较庞大臃肿,不方便维护。所以,我准备拆分该文件。


首先,在views.py同一个目录下,新建views文件夹。并在该文件夹内新建__init__.py空文件。

再拆分views.py文件,把功能类似的方法放在一起。先剪切粘贴方法,引用处理有个小技巧。

我这个views.py文件变成如下结构:

20170116/20170116104827098.png


这时直接运行会出错,还需要修改如下几个地方:

1)修改引用

若重新阅读代码,核对有那些引用没有添加的话,会比较费时费力。

我们可以把之前的views.py文件的全部引用分别都复制到每个拆分出来的文件中。再分别用编辑器的查找功能查找,去掉没有引用到的模块或库。

例如,我之前的views.py有这么多引用:

20170116/20170116105407105.png

分别复制到每个文件中之后,挨个查找HttpResponse、ContentType、check_admin等。若在本文件没有出现的引用将其去掉即可。

如果你的引用是*号全部引用的形式,我就无话可说了。


2)添加views之间的引用

有些方法可能被单独拆出来,或者划分到其他的文件,而其他的views文件需要用到这个方法。若不处理,会报错。

这种情况,添加引用即可。

例如我recommend.py文件有个rand_blogs方法。在pages.py中需要使用到该方法。

打开pages.py,添加如下引用:

from recommend import rand_blogs

两个文件都在views目录下,可以直接引用。


3)修改urls.py

因为我们的views中的方法位置和目录结构改变了,原来的urls设置无法找到对应方法的位置。

原本的urls.py文件代码如下:

from django.conf.urls import include, url
from blog import views as blog_views 

urlpatterns = [
    url(r'^comments/',include('apps_third_party.django_comments.urls')),

    url(r'^$', blog_views.index, name='blog_list'),
    url(r'^(?P<id>\d+)$', blog_views.blog_show, name='detailblog'),
    url(r'^sponsor$', blog_views.sponsor, name='sponsor'),

    url(r'^blog_add$', blog_views.add, name='blog_add'),
    url(r'^blog_add_ajax$', blog_views.add_ajax, name='blog_add_ajax'),

    url(r'^blog_edit/(?P<blog_id>\d+)$', blog_views.edit, name='blog_edit'),
    url(r'^blog_edit_ajax/(?P<blog_id>\d+)$', blog_views.edit_ajax, name='blog_edit_ajax'),

    url(r'^get_like_blogs$', blog_views.like_blogs, name='get_like_blogs'),
]

修改如下:

from django.conf.urls import include, url
from views import pages, editor, recommend

urlpatterns = [
    url(r'^comments/',include('apps_third_party.django_comments.urls')),

    url(r'^$', pages.index, name='blog_list'),
    url(r'^(?P<id>\d+)$', pages.blog_show, name='detailblog'),
    url(r'^sponsor$', pages.sponsor, name='sponsor'),

    url(r'^blog_add$', editor.add, name='blog_add'),
    url(r'^blog_add_ajax$', editor.add_ajax, name='blog_add_ajax'),

    url(r'^blog_edit/(?P<blog_id>\d+)$', editor.edit, name='blog_edit'),
    url(r'^blog_edit_ajax/(?P<blog_id>\d+)$', editor.edit_ajax, name='blog_edit_ajax'),

    url(r'^get_like_blogs$', recommend.like_blogs, name='get_like_blogs'),
]

直接引用该应用目录下的views中的拆分出来的文件,修改对应方法即可。


最后,在本地试运行一下。看看能否正常运行,若不能正常运行,会报错。再相应修改即可。

一般经过前面的修改,基本没问题。测试是为了查漏补缺。

上一篇:Excel公式新手学习推荐

下一篇:我的网站搭建(第41天) 基于关键字的智能推荐

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空