2

私は最新の製品でDjangoを使用(および学習)しており、ユーザーが自分で自動登録できるようにdjango-registrationアプリをインストールして使用を開始しました。

すべてが正常に機能していますが、すべての新しいユーザーを特定のグループ(作成済み)に割り当てることを考えているので、管理者を通常のユーザーから「分離」できます。

これどうやってするの?このアプリに関するドキュメントはひどいです、IMO。

django-registrationアプリの使用を開始するためのモデルや構成を作成しませんでした。

4

3 に答える 3

4

これが私を夢中にさせていたので、私はこれのためにフォークを作ることになりました。

https://github.com/kcunning/django-registration

基本的に、settings.pyファイルに以下を追加します。

REGISTRATION_DEFAULT_GROUP_NAME="グループ名"

登録モジュールを介して追加されたユーザーには、作成時にそのグループが与えられます。

于 2011-05-18T16:10:54.060 に答える
3

まず、私はdr(django-registration)の専門家ではなく、質問で言及したために実際にチェックアウトしただけです。したがって、他の誰かがより良い答えを持っている場合は、それを提出してください。とにかく、ここに行きます。

ユーザー(またはdrがユーザーと呼ぶ「プロファイル」)の作成方法は、registration.models.RegistrationManagerにあるcreate_inactive_user関数にあることに気付きました。したがって、この関数では次のようになります。

new_user.is_active = False
new_user.save()

次のようなものを追加できます。

default_group = Group.objects.get(name=WHATEVER_THE_GROUP_NAME_IS)
user_group, is_created = UserGroup.get_or_create(user=new_user)
user_group.group = default_group
#user_group.groups.add(default_group)   # Django ver. 1.7+
user_group.save()

同じユーザー名で複数のユーザーを作成することはできないと思うので、get_or_createがなくてもおそらく実行できますが、申し訳ありませんが、安全です。

この方法では、特定のもの(デフォルトのグループ名など)をハードコーディングするとともに、drファイルを編集することができます(これは最善の方法ではない場合があります)が、出発点としては適切です。

PS。デフォルトのグループ名は、settings.pyファイルにある変数である可能性があります。これにより、よりアクセスしやすく、きれいになります。例:

settings.py:
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME'

registration/models.py:
default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)

とにかく、それが役立つことを願っています。

于 2011-05-01T19:00:02.977 に答える
0

django-registration-reduxには、登録ユーザーを特定のグループに割り当てるために使用できるカスタムシグナルがあります。「user_registered」シグナルは、この目的に使用できます。django-registration-reduxのドキュメントを参照してください

from django.contrib.auth.models import Group


def user_created(sender, user, request, **kwargs):
    group = Group.objects.get(name='Kurum') 
    group.user_set.add(user)
    user.save()


from registration.signals import user_registered
user_registered.connect(user_created)
于 2020-01-16T20:03:50.243 に答える