【发布时间】:2010-09-23 22:22:36
【问题描述】:
有人可以证明为什么使用这样的解决方案是一种不好的做法:
在 django 视图中 98% 的情况下你需要使用
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
无论如何,在我的项目中,我的每个视图都有这些导入,并且几乎在视图的每一秒函数中都会用到所有内容:
from datetime import datetime
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.core import paginator
from django.db import connection
from django.db.models import Q
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.utils.translation import ugettext as _
现在添加一些模型和表格,我有 50 行根本无法阅读的废话。
我想到的第一件事当然是创建更多视图,拆分一些操作等等等等。但仍然有大约 30 行导入扼杀了我在代码中的方向。
然后我决定将 95% 的时间在视图中使用的所有内容都放在目录 /project/app/imports/view.py 中。现在我只有 ONE 导入了所有常见的东西,但是我的同事攻击我,这种代码很难阅读,因为你看不到导入了什么,以及为什么见鬼,在你的 IDE 中再打开一个标签太难了..??? [尤其是 vim 用户,他们有 FRAMES,而他正在使用 vim]
我对模型做了同样的事情,我的模型有它自己的目录,因为里面有 50 多个,而且这些文件不小 - 每个大约 150 行.. 即使这些文件里面的模型也很少.. 所以我'我只是在做类似的事情:
from myapp.models.mymodel import *
有些地方我只是在做:from myapp.models import * [init.py of myapp/imports dir 发生在这里]
问题:
1) 好的,所以第一个问题是命名空间,这种模型导入可能真的很荒谬.. 但是视图和表单的决定只是懒惰地在 IDE 中打开另一个选项卡
2) 性能问题?我的同事真的对这个论点争论了很多,“每次导入都需要 256kb 的内存”?? (通过运行编译的 .pyc 文件?不,我不相信;)
问题实际上是由于导入导致的性能问题。
附言我真的是 python 的新手(才 3 个月),我愿意接受客观的论点来讨论这个解决方案的所有问题和缺点。
更新
有一次我问了关于如何将导入移动到独立文件的问题,所以没有人抱怨这个 =) 问题是here
【问题讨论】: