4

Django の Auth User を使用していないため、独自のモデル CustomUser があり、このモデルを使用してサイトで認証を行いたい (CustomUser は User モデルから継承されておらず、まったく関係ありません)。

class CustomUser(models.Model):
    password = models.CharField(max_length = 40)
    email = models.EmailField(max_length = 72, unique = True)
    #stuff...

https://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backendを確認しましたが、理解できない主な点は次のとおりです。

from django.contrib.auth.models import User

CustomUser を使用したい場合、Django User をインポートする必要がありますか?

標準の認証ユーザーなしで Django を使用する方法を説明する適切なチュートリアルが見つかりません。

*編集: User で拡張できることはわかっています。しかし、私はそれを望んでいません。問題は、ユーザーを使用して追加情報などを保存する最良の方法は何かということではありません。しかし、認証ユーザーを使用せずにカスタムユーザーを使用する方法。理由がなくても。*

可能であれば方法を知りたいです。

4

3 に答える 3

1

Django認証システム全体がと緊密に結合されてdjango.contrib.auth.models.Userいるため、バックエンドで使用する必要があります。Djangoドキュメントの引用

今のところ、これに対処する最善の方法は、バックエンドに存在するユーザーごとにDjangoUserオブジェクトを作成することです。

しかし、ここでの主な質問はCustomUser、通常のモデルでは実装できないUser(拡張される可能性がある) 、あなたの何が特別なのかということです。99%の場合、使用するUserのが最善の方法です。

于 2012-04-25T09:34:46.950 に答える
0

この投稿をチェックしてください。

私が取り組んできたほとんどの Django プロジェクトでは、contrib.auth.models.User モデルが保持する標準の名前と電子メール アドレスに加えて、各ユーザーに関する情報を保存する必要があります。

リビジョン 7477 (2008 年 4 月 26 日) の時点でトランクを使用している場合、モデル クラスは既存のモデル クラスから継承できます。追加のフィールドは、基本モデルのテーブルにリンクされている別のテーブルに保存されます。モデルを取得すると、クエリは結合を使用してモデルとベース モデルからフィールドを取得します。

http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/

そしてこの投稿。

認証アプリケーションを独自のプロジェクトにコピーし、必要に応じて変更します。これにより、メンテナンスの問題の一部が回避されますが、最初に認証システムをバンドルする Django のユーティリティが削除されます。また、User モデルが django.contrib.auth にあることを期待する他のアプリケーションとの互換性の問題を引き起こす可能性もあります。

http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/

于 2012-04-25T10:01:20.307 に答える