Newbie Django: Creating a project with several apps or all in one
Question: I am begginer in the Django world, I developed some "information sites"
(nothing complicated) but this week my boss order me to make a migration of a
big software that has 7 modules.

So I went to read the documentation page and search in google for how I could
design this software using Django. I know that the every "module" can named as
"app", so I create a new project and one app for every module (I dont know if
it was right because the modules will not be public).

The problem is that now I don't know what is the next step.

All my apps can share data (every app has its owns models but sometimes one
app has a model that was related to the models in other apps)?

Where do I write the code for the login process (I create a manageUsers app
that was thinked to handle the registration, edit, share and validate profile
of the current or new user ) and we can be able to share this session data
accross the apps?

I need one more app for put the website information (like contact, about,
pricing ...)? I use Python 2.7, Django 1.3, Memcached and Mysql 5.

If someone can help me or tell me where it may clarify these questions because
most explains how to develop using only one app and in the IRC got no reply or
else I must be write all the code in one app?

Best Regards


Answer: A good place to start (dated, but worth reading; look at user comment bubbles
too): <http://www.djangobook.com/en/2.0/> . Chapter 1 - 10 are essential
reading. You can pick-and-choose to read the remaining chapters, if desired.

Yes, all Django Apps can share data with one another. You make multiple Django
Application's, housed under a single Django Project. The Project sets up a
common database to use, and each Application creates Models which use said
database. App1 can talk to App2 and vice-versa.

    
    
    Django Project (one)  <----->>  (many) Django Application
    

Typically you separate Apps based on common function. User accounts get their
own app (see Auth below). Blog postings get another. A Google Maps interface
will get another. User subscriptions, another.

For user accounts and login, Django provides the [Auth
Module](https://docs.djangoproject.com/en/1.3/topics/auth/). You can have user
accounts stored directly in Django, or configure it to talk to something else,
like Active Directory. Auth works "pretty good" out of the box, though I
personally customized mine a bit to allow 255-character email addresses as
usernames (by default, it limits to 40 characters). [Chapter
14](http://www.djangobook.com/en/2.0/chapter14/) in the Django book might be a
little easier to read than the official Auth docs. If you do use Auth, you
don't have to make your own Django Application, since Auth already is one! You
just install it in settings.py and you're golden.

Your Django structure will likely look something like this:

    
    
    /Project/
      __init__.py
      manage.py
      settings.py
      urls.py
    
      App1/
        __init__.py
        forms.py
        models.py
        views.py
        templates/App1/
          template1.html
          template2.html
    
      App2/
        ...
    

App2 can access the data-models of App1 by doing: `from Project.App1.models
import someModel`

