django-registration - новый пользователь в определенной группе - PullRequest
2 голосов
/ 01 мая 2011

Я использую (и изучаю) Django на своем новом продукте, и я только что установил и начал использовать приложение django-registration , чтобы мои пользователи могли автоматически регистрироваться.

Все работает хорошо, но я думаю о назначении каждого нового пользователя определенной группе (уже созданной), чтобы я мог "отделить" администраторов от обычных пользователей.

Как я могу это сделать? Документация об этом приложении ужасна, ИМО.

Я не создал ни одну модель или конфигурацию, чтобы начать использовать приложение регистрации django.

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Я закончил делать форк для этого, так как это сводило меня с ума.

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

В основном, добавьте следующее в ваш файл settings.py:

REGISTRATION_DEFAULT_GROUP_NAME = "Имя группы"

Любой пользователь, добавленный через модуль регистрации, получит эту группу при создании.

3 голосов
/ 01 мая 2011

Для начала, я не эксперт в dr (django-registration) и на самом деле проверял это только потому, что вы упомянули об этом в своем вопросе.Так что, если у кого-то есть лучший ответ, пожалуйста, отправьте его.В любом случае, здесь все идет.

Я заметил, что способ создания пользователей (или «профилей», как их называет dr) находится в функции create_inactive_user, расположенной в registration.models.RegistrationManager.Итак, в этой функции после:

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)

В любом случае, надеюсь, это поможет.

...