Django is made to thrive on having multiple apps.
1 App for user signup, 1 app for profiles, 1 app for comments, 1 app for blog postings, etc. etc.
Doing everything in one app will, as you pointed out, quickly lead to clutter. The best method with Django is to create many very specific applications. This also allows you to have more apps that you can reuse in other projects if you so wish.
There are dozens of possible "structures" for a Django project. I'd go for the most modular approach. And for every piece of functionality just ask yourself: Does this belong directly to another app? If the answer is no you're most likely better of creating a separate app for it.
E.g the same blog postings app can be used on multiple websites and you'd only have to change the template to make it fit the new layout/design of the page. All the logic should be mostly the same. And the logic of a blog post should not be linked to the logic of viewing a profile or something.
Example: for a comment app the model could look like this:
from django.db import models
from profile.models import Profile
from blog.models import Blog
class Comment(models.Model):
user = models.ForeignKey(Profile, related_name='comments')
blog = models.ForeignKey(Blog, related_name='comments')
message = models.CharField(max_length=200)