Cal

I agree that its true that having more experience allows you to build
better web apps and get smarter about how you do that. But I disagree
that someone with that experience cannot share some or part of the
"why and how" that is done.  And I hope someone will be able to :)

Derek

On 10 January 2012 13:01, Cal Leeming [Simplicity Media Ltd]
<cal.leem...@simplicitymedialtd.co.uk> wrote:
> I've hit this same problem myself many times.
>
> Ultimately there is never any one answer - you can split out functionality
> into individual modules, but there has to be a good use case for it,
> otherwise the overhead has a negative impact.
>
> You also have to take into consideration the re-usability of what you are
> splitting out, and if something is split out, then it has to be treated as a
> standardized module which is kept backwards compatible for everything.
>
> It's not just a case of having a standardized directory layout, the entire
> use case of the project will determine the layout - you can follow 'sane
> principles' such as naming convention etc, but the actual splitting of
> functionality is really up to the developer (and isn't really something that
> can be taught - it's more of an experience thing).
>
> Personally, I found that using 'MultiHostMiddleware' has been an absolute
> life saver for splitting out sites within a single project - check it
> out: http://code.djangoproject.com/wiki/MultiHostMiddleware (I just went and
> tidied it up a bit).
>
> Just my two cents worth!
>
> Cal
>
> On Tue, Jan 10, 2012 at 6:46 AM, Derek <gamesb...@gmail.com> wrote:
>>
>> 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.
>>
>
> --
> 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.

-- 
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