The final piece of the puzzle is the profile system. To understand what profiles are all about, let’s first look at the problem.

In a nutshell, many sites need to store more user information than is available on the standard User object. To compound the problem, most sites will have different “extra” fields. Thus, Django provides a lightweight way of defining a “profile” object that’s linked to a given user. This profile object can differ from project to project, and it can even handle different profiles for different sites served from the same database.


The first step in creating a profile is to define a model that holds the profile information. The only requirement Django places on this model is that it have a unique ForeignKey to the User model; this field must be named user. Other that that, you can use any other fields you like. Here’s a strictly arbitrary profile model:


from django.db import models
from django.contrib.auth.models import User

class MySiteProfile(models.Model):
    # This is the only required field
    user = models.ForeignKey(User, unique=True)

    # The rest is completely up to you...
    favorite_band = models.CharField(maxlength=100, blank=True)
    favorite_cheese = models.CharField(maxlength=100, blank=True)
    lucky_number = models.IntegerField()


Next, you’ll need to tell Django where to look for this profile object. You do that by setting the AUTH_PROFILE_MODULE setting to the identifier for your model. So, if your model lives in an application called myapp, you’d put this in your settings file:

AUTH_PROFILE_MODULE = "myapp.mysiteprofile"

このプロファイルオブジェクトをDjangoが見つけ出せるようにします。AUTH_PROFILE_MODULE を定義すればいいのです。myappアプリケーションでは次のようになるでしょう。

Once that’s done, you can access a user’s profile by calling user.get_profile(). This function could raise a SiteProfileNotAvailable exception if AUTH_PROFILE_MODULE isn’t defined, or it could raise a DoesNotExist exception if the user doesn’t have a profile already (you’ll usually catch that exception and create a new profile at that time).

ユーザーのプロファイルはuser.get_profile()でアクセスできます。AUTH_PROFILE_MODULEが定義されていないとSiteProfileNotAvailable 例外です。そのユーザーのプロファイルが存在しないとDoesNotExist例外です。(通常はキャッチされて新規プロファイルを作ることになります)

カテゴリー: 未分類 パーマリンク


以下に詳細を記入するか、アイコンをクリックしてログインしてください。 ロゴ アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中