2011-05-01 2 views
2

내 최신 제품에 Django를 사용하고 있습니다. 방금 django-registration 앱을 설치하고 사용하여 사용자가 자동 ​​등록 할 수있게했습니다.django-registration - 특정 그룹의 신규 사용자

모든 것이 잘 작동하지만 모든 새 사용자를 특정 그룹 (이미 생성됨)에 할당하려고합니다. 따라서 관리자를 일반 사용자와 "분리"할 수 있습니다.

어떻게하면됩니까? 이 응용 프로그램에 대한 설명서는 끔찍한, IMO입니다.

장고 등록 앱을 사용하기위한 모델이나 구성을 만들지 않았습니다.

답변

3

시작하려면 d-r (장고 등록) 전문가가 아니며 질문에 언급했기 때문에 실제로 체크 아웃 한 것입니다. 따라서 다른 사람이 더 좋은 답변을 제출하면 제출하십시오. 어쨌든, 여기 있습니다.

사용자 (또는 d-r이 프로파일이라고 부르는)의 작성 방법이 registration.models.RegistrationManager에있는 create_inactive_user 함수에서 발견되었습니다. 난 당신이 같은 둘 이상의 사용자를 만들 수 있다고 생각하지 않는 한 당신은 아마 get_or_create없이 할 수

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() 

: 그래서,이 기능에 후 : 당신은 뭔가를 추가 할 수

new_user.is_active = False 
new_user.save() 

사용자 이름,하지만 오히려 미안한 것보다 안전 할 것입니다.

이 방법을 사용하면 특정 항목 (예 : 기본 그룹 이름)을 하드 코딩 할 때 d-r 파일 (가장 좋은 방법은 아닐 수도 있음)을 편집 할 수 있지만 좋은 단계가되어야합니다.

추신. 기본 그룹 이름은 settings.py 파일에있는 변수 일 수 있습니다.이 변수를 사용하면 더욱 쉽게 액세스 할 수 있습니다. 예 :

settings.py: 
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME' 

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

어쨌든 희망이 있습니다.

+0

또한 실제 사용 권한 테이블 (또는 사용자 자신)을 사용하지 않고 사용자와 관리자 만 구별해야하는 경우 사용자 모델의 is_staff 및 is_superuser 필드를 사용할 수도 있습니다. –

+0

그건 정말 좋은 답변이지만, Dr 코드에서 아무 것도 바꾸고 싶지 않기 때문에 다른 답장을 기다릴 것입니다 (내 프로젝트 외부입니다). –

+0

@TiuTalk 프로젝트 외부에있는 것이 사실이지만, virtualenv를 사용하여 단일 프로젝트가 너무 많은 문제가되어서는 안됩니다. 필자는 주어진 장고 프로젝트에 로컬 인 ENV/lib/python2.7/site-packages/registration 파일을 변경했습니다. – Tom

4

나는 이것이 나를 미치게 만들면서 포크를 만들기 시작했다.

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

는 기본적으로, 당신의 settings.py 파일에 다음을 추가

REGISTRATION_DEFAULT_GROUP_NAME = "그룹 이름을"

모든 사용자가 등록 모듈을 통해 추가는 해당 그룹에 따라 작성을 받게됩니다.

+0

이것은 미친 짓이야! 어떻게 그렇게 단순한 것이 그렇게 어려울 수 있는가? –

관련 문제