Как сохранить импорт в Django?

Это может показаться субъективным вопросом, но я уверен, что есть хорошие методы, которые некоторые из вас используют, чтобы гарантировать, что импорт в проектах 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

который, как вы видите, просто беспорядочен, так как я просто добавляю в нижнюю часть списка каждый раз, когда мне нужно что-то в файле. Сохранение его в алфавитном порядке, очевидно, поможет, но должен быть лучший способ обобщить, чем то, что я сейчас делаю.

Стоит ли нарушать руководство по стилю не использовать импорт * для более коротких и более поддерживаемых разделов импорта в фактическом файле?

Ответ 1

Tomasz уже упомянул одну интересную часть документации Google относительно импорта, но я думаю, что этот раздел стоит прочитать!

Ответ 2

Вы правы, что легко игнорировать 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 *