关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
随着功能的开发,views.py文件的代码会越来越多。
我的Blog应用的views.py已经20条引用、15个方法、500多行代码。
整个文件看起来比较庞大臃肿,不方便维护。所以,我准备拆分该文件。
首先,在views.py同一个目录下,新建views文件夹。并在该文件夹内新建__init__.py空文件。
再拆分views.py文件,把功能类似的方法放在一起。先剪切粘贴方法,引用处理有个小技巧。
我这个views.py文件变成如下结构:
这时直接运行会出错,还需要修改如下几个地方:
若重新阅读代码,核对有那些引用没有添加的话,会比较费时费力。
我们可以把之前的views.py文件的全部引用分别都复制到每个拆分出来的文件中。再分别用编辑器的查找功能查找,去掉没有引用到的模块或库。
例如,我之前的views.py有这么多引用:
分别复制到每个文件中之后,挨个查找HttpResponse、ContentType、check_admin等。若在本文件没有出现的引用将其去掉即可。
如果你的引用是*号全部引用的形式,我就无话可说了。
有些方法可能被单独拆出来,或者划分到其他的文件,而其他的views文件需要用到这个方法。若不处理,会报错。
这种情况,添加引用即可。
例如我recommend.py文件有个rand_blogs方法。在pages.py中需要使用到该方法。
打开pages.py,添加如下引用:
from recommend import rand_blogs
两个文件都在views目录下,可以直接引用。
因为我们的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中的拆分出来的文件,修改对应方法即可。
最后,在本地试运行一下。看看能否正常运行,若不能正常运行,会报错。再相应修改即可。
一般经过前面的修改,基本没问题。测试是为了查漏补缺。