Я пытаюсь настроить проект, который содержит общие приложения (projectA) для совместного использования несколькими другими проектами Django (projectB ради этого вопроса). У меня есть структура каталогов, как:
/ Джанго / Projecta
/ Джанго / projectB
Я обновил PYTHONPATH, добавив в него "/ django", и я могу импортировать файлы как из projectA, так и из projectB в оболочке python.
Раньше все было в projectB, и это работало, но сейчас я создаю projectC. ProjectC нуждается во многом в той же функциональности, что и projectB, поэтому было бы полезно выделить общий код. Если я позже напишу другие проекты.
Я успешно импортировал URL-адреса из приложений, используя:
urlpatterns = patterns('',
...
(r'^appname/', include('common.appname.urls')),
...
)
Но я не могу импортировать какие-либо файлы. Например, у меня есть новое поле формы почтового индекса, которое я написал:
from django.forms.fields import CharField
from django.utils.translation import ugettext_lazy as _
from contrib.core import validators
class ZipcodeField(CharField):
default_error_messages = {
'invalid': _(u'Enter a valid zipcode.'),
}
default_validators = [validators.validate_zipcode]
расположен по адресу:
Джанго / Projecta / формы / forms.py
Когда я пытаюсь включить его в projectB, я получаю сообщение об ошибке: undefined:
'модуль' объект не имеет атрибута 'формы'
или же
"имя 'projectA' не определено"
в зависимости от того, как я пытаюсь его включить.
Может кто-нибудь помочь мне понять, что я делаю неправильно и как я должен делиться кодом между проектами. Я бы очень хотел следовать правилам СУХОГО кодирования.
спасибо
Матф