Ответ 1
Tomasz уже упомянул одну интересную часть документации Google относительно импорта, но я думаю, что этот раздел стоит прочитать!
Это может показаться субъективным вопросом, но я уверен, что есть хорошие методы, которые некоторые из вас используют, чтобы гарантировать, что импорт в проектах Django останется под контролем. Я привык иметь список около 30 различных импортных данных в каждом файле, что явно нарушает принцип СУХОЙ. Так что это не только эстетика, но и не дублирующий код.
Я ищу метод, который позволяет обрабатывать разделы импорта в файлах 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
который, как вы видите, просто беспорядочен, так как я просто добавляю в нижнюю часть списка каждый раз, когда мне нужно что-то в файле. Сохранение его в алфавитном порядке, очевидно, поможет, но должен быть лучший способ обобщить, чем то, что я сейчас делаю.
Стоит ли нарушать руководство по стилю не использовать импорт *
для более коротких и более поддерживаемых разделов импорта в фактическом файле?
Tomasz уже упомянул одну интересную часть документации Google относительно импорта, но я думаю, что этот раздел стоит прочитать!
Вы правы, что легко игнорировать DRY при работе с импортом Django или с импортом python в целом.
Иногда бывает полезно разделить общий импорт по домену, а затем создать модуль для управления этими импортами. Следующий шаг - одно из немногих исключений, которые я делаю в своем личном правиле "Не использовать import *
"
stuff_i_always_use.py
import django.templates as templates
import tagalog.tagalog_appengine as tagalog
#etc
Затем в каком-то файле:
from stuff_i_aways_use import *
Вы также можете проверить, как они это делают в Google:
http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Imports