ジャンゴ拡張ユーザー
環境
Pythonの3.5.1
ジャンゴ1.9.1
序文
今日では、Djangoの書き込みWebプラットフォーム、Djangoの認証セッションは、車輪があるので、より良い提供しており、私たちは自分自身が構築する必要はありません来て最初に考えたと。
メソッドのDjangoのユーザーの拡張:
書き換えユーザーは、管理者に新しいユーザーを登録しますが、また、認定を書き換えます
第二に、継承されたユーザーは、拡大(AUTH_USER_MODELの設定を設定することを忘れないでください
)
2.1クラスはAbstractUserを継承します
あなたはジャンゴに満足しているUserモデルが付属しており、追加のフィールドを追加したいと考えていた場合、あなたはAbstractUserクラスを拡張することができます(この論文では、このメソッドを実装することです)
新しいDjangoのUserクラスは、電子メールをサポートして、あなたはまた、ユーザーのログインとして電子メールを使用することができます
2.2クラスはAbstractBaseUserを継承します
AbstractBaseUserは3つだけのフィールドが含まれます。パスワード、last_loginをしてis_activeこれは、彼らが必要とする独自の高度にカスタマイズされたものです。
model.py
admin.py
拡大するが、最初からこのようなアプローチのdjango1.6を放棄するために3つ、プロファイルの方法
第四に、オンラインの方法は、新しいテーブルなしで、ソースコードを変更しないでください、見つけるため、拡張されたユーザー
このコードを少し説明:ProfileBaseは、カスタムメタクラスから継承しているtypes.ClassType
基底クラスProfileUserれ、そのメタクラスはProfileBaseですが、私たちが本当にextraInfoはカスタムフィールドタイプ、理由基底クラスProfileUserそしてextraInfoは別に、参照ProfileUserを容易にするために他の場所で、カスタム拡張用。それは元を実行するときにサブクラスProfileUserクラスとメタクラスProfileUserクラスの定義の中で通訳を見たときだけで、入れメタクラスは、サブクラス定義ProfileUserで、ProfileBaseあるとextrainfoのでProfileBaseは、ありますクラスは、新しいコードをProfileBase、そしてクラスで定義されている(基底クラスの名前、クラス属性が)ここに新しい、名前にパラメータとして渡されたが、クラスとextrainfoの名前であることで、媒体が新しく追加されたフィールドが含まれていますATTRS User.add_to_class
新しいフィールドは、管理者に表示に追加することができるようにするためには、ユーザーに追加されるUserAdmin.fieldsets
途中、それがリストに表示されるように、あなたは、もちろん、あなたもist_displayに追加することができ、バックグラウンドでこのフィールドを編集することができます。
あなたは他のアプリでもカテゴリー別にすべてのサブクラスProfileUser限り、フィールドやメソッドにおけるユーザーモデルに追加して、他のすべての作業を定義する宣言構文を使用したい持っている場合は、完了するのに役立ちメタクラスがあります。これはまた、すべてのDjangoのモデルの内部の仕組みである、あなたが任意のモデルを拡張するために、このメソッドを使用することができます。
転載元:http://www.opscoder.info/extend_user.html
需要
ログインユーザーフィールド主のみ(メール、ユーザ名、パスワード)が付属しています既製のコードを持って登録し、それがユーザーを拡大する必要がある、我々はフィールドを増やす必要があります
コードは以下の通りであります:
model.py
settings.py
段ピット:
図1は、拡張されたユーザ・テーブルの後、settings.pyに追加します
、特にコンマを覚えて、それ以外の場合はエラーを追加するためにバックグラウンドで2、認証設定
与えられずに背景を認定
エラーは、カンマを追加しませんでした
form.py
views.py