这可能看起来像是一个主观问题,但我确信你们中有些人采用了很好的技术来确保Django项目中的导入能够保持可维护性。我习惯在每个文件中列出大约30种不同的导入,这显然违反了DRY原则。因此,它不仅仅是关于美学,还关乎不重复代码。
我正在寻找一种方法来保持Django文件中的导入部分可管理。在我看来,一个好主意是为每个文件类型(视图,模型等)创建一个通用导入文件,然后在顶部导入,之后再进行特定于应用程序的导入。但这会导致很多不必要的开销吗?这些文件应该如何显示,每种文件类型的重要类是什么?
更新
根据要求,这是我的views.py
个文件中的一个示例。
from django.shortcuts import render_to_response, get_object_or_404
from shortcuts import render_to_context, render_template
from django.http import HttpResponseRedirect
from django.contrib.comments.models import Comment
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.views.decorators.http import require_POST
from django.core.urlresolvers import reverse
from models import Listing, LocationData
from django.template import RequestContext
import sys
import urllib
if sys.version_info <= (2, 5):
import simplejson as json
else:
import json
import forms
import sanitize
from models import RentListing, VacationListing, SaleListing
from django.forms.models import model_to_dict
from django.forms.formsets import formset_factory
from django.core.urlresolvers import reverse
正如你所看到的那样,它只是非常混乱,因为每次我需要文件中的内容时我都会添加到列表的底部。保持字母顺序显然会有所帮助,但必须有一种比我现在所做的更好的推广方式。
为了在实际文件中使用更短,更易维护的导入部分,是否值得违反不使用*
导入的样式指南?
答案 0 :(得分:4)
你是正确的,在使用Django导入或一般使用python导入时很容易忽略DRY。
通过域分离常见导入有时是有益的,然后创建用于管理这些导入的模块。下一步是我对“不要使用import *
”个人规则的少数例外之一
stuff_i_always_use.py
import django.templates as templates
import tagalog.tagalog_appengine as tagalog
#etc
然后在某个文件中:
from stuff_i_aways_use import *
答案 1 :(得分:2)
您还可以查看他们在Google上的表现:
http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Imports
答案 2 :(得分:1)
Tomasz已经提到谷歌关于进口的文档中有一个有趣的部分,但我认为this section也值得一读!