Skip to main content

Tools for Profile models in Django.

Project description

About

The lazy loading of profiles was inspired by the rather incredible Noah Kantrowitz.

Features

  • Lazy loading of your authenticated profile record across the request object lifetime. That means in the Python code and the templates.

  • Name your profile model anything you want in settings.AUTH_PROFILE_MODULE.

Installation

Get the code:

pip install django-profiletools

Install the middleware and context_processor in your settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
        ...
    'profiletools.context_processors.fetch_profile',
)

MIDDLEWARE_CLASSES = (
...
'profiletools.middleware.LazyProfileMiddleware',
)

Also in settings.py, set the AUTH_PROFILE_MODULE to your profile model:

AUTH_PROFILE_MODULE = "profiles.Profile"

Based on that, your profile model should resemble something like:

# profiles.models.Profile.py
from django.contrib.auth.models import User
from django.db import models

class Profile(models.Model):

    user = models.OneToOneField(User)

    def __unicode__(self):
        return self.user.username

note: If you don’t use profiles.models.Profile, say members.models.UserProfile go ahead and change the AUTH_PROFILE_MODULE to “members.UserProfile”.

Usage

In your templates:

{{ request.my_profile }}

In your functional views:

profile = request.my_profile

In your class-based views:

profile = self.request.my_profile

Call my_profile as many times as you want, it only loads once. So if you call it 100 times in a view, the SQL SELECT is only done the first time. If no user is found then the my_profile call result is None, which makes it easier to handle templates which need to be able to handle unauthenticated users (like the about page).

note: If you are using the members.UserProfile example, you’ll need to call that by using request.my_userprofile.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-profiletools-0.1.1.tar.gz (12.8 kB view details)

Uploaded Source

File details

Details for the file django-profiletools-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-profiletools-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e1b1d4409b8ed4e522e25477496334f6cd0d44f42324a325c282ecd46562ed28
MD5 274f6829804e00cee7ff4742cb508c3d
BLAKE2b-256 194c7a0dc6563b338753f9f32e8123ffcf1c701e1e692bcf374dd71f09919aba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page