Как сохранить импорт в чистоте в Джанго? - PullRequest
10 голосов
/ 21 января 2011

Это может показаться субъективным вопросом, но я уверен, что есть хорошие методы, которые некоторые из вас применяют для обеспечения возможности поддержания импорта в проектах Django.Я привык иметь список из 30 различных импортов в каждом файле, и это явно нарушает принцип СУХОЙ.Так что речь идет не только об эстетике, но и о том, чтобы не дублировать код.

Я ищу метод, который позволяет управлять разделами импорта в файлах Django.То, что мне кажется хорошей идеей, - это иметь общий файл импорта для каждого типа файла (виды, модели и т. Д.), Который затем импортируется вверху, с последующим импортом для конкретного приложения после этого.Но не вызовет ли это много ненужных накладных расходов?Как должны выглядеть эти файлы и каковы важные классы для каждого типа файлов?

Обновление

По запросу приведен пример одного из моих views.py files.

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

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

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

Ответы [ 3 ]

4 голосов
/ 21 января 2011

Вы правы, что 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 *
2 голосов
/ 21 января 2011

Вы также можете проверить, как они это делают в Google:

http://google -styleguide.googlecode.com / SVN / багажник / pyguide.html # Импорт

1 голос
/ 23 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...