I'm trying to setup a project that contains commons apps (projectA) to be shared by several other Django projects (projectB for the sake of this question). I have a directory structure like:
/django/projectA /django/projectB
I have updated the PYTHONPATH to include "/django" and I can import files from both projectA and projectB in the python shell.
Everything used to be in projectB, and it worked, but now I'm creating projectC. The projectC needs a lot of the same functionality as projectB, so it seemed useful to break out common code. In case I later write other projects.
I have had some success importing URLs from the apps using:
urlpatterns = patterns('',
...
(r'^appname/', include('common.appname.urls')),
...
)
But I am unable to import any files. For example I have a new zipcode form field I wrote:
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]
located at:
django/projectA/forms/forms.py
When I try to include it in projectB, I get an error that it is undefined:
'module' object has no attribute 'forms' or "name 'projectA' is not defined"
depending on how I try to include it.
Can someone please help me understand what I am doing wrong and how I am supposed to be sharing code between projects. I'd really like to follow the DRY coding conventions.
thanks -matt