Brian

That is useful "generic" advice and a topic I am very interested in -
how to break up an "enterprise" type of application into smaller apps
(to enable distribution of sub-sections to different types of
audiences) while at the same time maintaining tight coherency among
closely-related data sets.  In this case there is a typically a "core"
data set and then many other more peripheral ones that all need to
connect to the core.  I have not yet seen any example of such a design
process - or even a set of principles - which describe *how* to
achieve such a design.

Derek

On 9 January 2012 18:18, Brian Schott <bfsch...@gmail.com> wrote:
> My advice is If you find yourself breaking models, views, utils, etc. into 
> separate files within an app, you should really consider breaking your app 
> into multiple apps.  I hit this myself in or own project and found myself 
> dealing with the auto registration functionality for admin.py, tasks.py, and 
> a bunch of other too-large files.  I bit the bullet and broke things out and 
> my import/discovery headaches disappeared.  My individual py files got small 
> and
>
> +--major_app
>     +--docs
>     +--templates
>          +-- (img, js, css, base.html)
>     +--projects
>          +--dev
>          +--test
>          +--deploy
>     +--apps
>          +--sub_app1    (create with startapp command)
>               +--models.py
>               +--tasks.py
>               +--templates
>               +--tests.py
>               +--urls.py
>               +--views.py
>               +--...
>          +--sub_app2
>               +-- .....
>
> I put this in the top of my settings.py files down in projects/dev or 
> projects/test, or projects/deploy so that the apps just get discovered.
>
> # the base directory is up two levels from the project
> PROJDIR = os.path.abspath(os.path.dirname(__file__)) + '/'
> PROJNAME = PROJDIR.split('/')[-2]
> BASEDIR = os.path.abspath(os.path.join(PROJDIR, '..', '..')) + '/'
> APPSDIR = os.path.abspath(os.path.join(BASEDIR, 'apps')) + '/'
>
> # add apps and projects directory to path
> sys.path.insert(0, PROJDIR)
> sys.path.insert(0, APPSDIR)
>
> Brian
>
> Brian Schott
> bfsch...@gmail.com
>
> On Jan 7, 2012, at 2:24 PM, IgorS wrote:
>
>> Below is my current structure. I am new to Django and probably missing
>> something... Restructuring an application somewhere in the middle of
>> the development cycle is more expensive than just having the "right"
>> layout from the start. Especially if this is possible. I consider a
>> small overhead at the start being better than a great rework in the
>> middle (yes, i am aware of the minimal viable product concept :-)
>>
>> app
>>       +--models
>>               ---abstract_base.py
>>               ---core.py
>>               ---...
>>       +--probe
>>       +--static
>>               ---css
>>               ---js
>>               ---images
>>       +--templates
>>               ---base.html
>>               ---...
>>       +--tests
>>               ---test_users.py
>>               ---...
>>       +--utils
>>       +--views
>>       ---__init__.py
>>       ---app_settings.py
>>       ---context_processors.py
>>       ---middleware.py
>>       ---urls.py
>>
>> Thank you,
>> -igor
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to