2011-03-17 3 views
4

현재 장고 기반 사이트를 디자인하고 있습니다. 단순하게하기 위해 사용자가 로그인하여 다른 사용자에게 메시지를 쓸 수있는 단순한 커뮤니티 사이트라고 가정하십시오.Django 사용자 - 모델을 사용하거나 자체 모델을 만드시겠습니까?

내 현재 선택할 수있는 빌드는 User-Model을 사용하거나 내 자신 만의 제품을 만드는 것입니다. 나는 많은 것을 필요로하지 않는다. User : 사용자 명 (이메일 주소는 당신의 사용자 명)이 없지만 여러 명의 사용자가 사용할 수있는 내부 이름 (예 : Facebook)을 설정할 수있다. 또한 다른 사용자는 그룹을 기반으로하지 않으므로 권한 시스템이 필요하지 않습니다. 그래서 나는 User 빌드에서 전자 메일, firstname, lastname 및 password 필드 만 사용하고 나머지는 UserProfile에 저장됩니다. 반면에 그룹 기반의 권한 시스템이 필요할 가능성이 있기 때문에 buildin 사용자 시스템은 사이트의 백엔드에서 유용 할 것입니다.

전체적으로, 나는 하나의 사용자 모델을 만들고 관리 백엔드에 액세스하기 위해서만 buildin을 사용합니다.

내 반성에는 어떤 문제가 있습니까?

답변

9

내 반성에는 어떤 문제가 있습니까?

예.

내 현재 선택할 수있는 빌드는 User-Model을 사용하거나 내 자신 만의 제품을 만드는 것입니다.

세 번째 선택 항목이 있습니다.

http://docs.djangoproject.com/en/1.2/topics/auth/#storing-additional-information-about-users 다른

모든

은 USERPROFILE

수정에 배치 될 것이다.

내 하나 개의 사용자 모델을 구축하고 만 자신을 구축하지 마십시오 관리자 백엔드

에 액세스하기위한 buildin를 사용합니다.

이 작업을 수행 :

당신이 사용자와 관련된 추가 정보를 저장하려는 경우, 장고는 사이트 별 관련 모델을 지정하는 방법을 제공 - 에게 "사용자 프로필을 되나 " -- 이 목적을 위해.

+0

좋은 답변 s.Lott;) – Efazati

0

현재 일부 요구 사항이 있지만 시간이 지나면 변경 될 수 있습니다. Django의 사용자 시스템은 매우 간단하며이를 사용하면 가장 일반적인 사용 사례에보다 쉽게 ​​적응할 수 있습니다.
또 다른 측면은 이미 사용할 수있는 몇 가지 응용 프로그램이 있으며 장고 사용자가 필요할 수 있다는 것입니다. 자신의 모델을 사용하면 이러한 모듈의 사용을 훨씬 더 어려워 질 수 있습니다.

한편 현재 요구 사항을 준수하기 위해 장고 사용자 시스템을 해킹하는 것은 까다로운 작업 일 수 있습니다.
또한 '사용자 정의 사용자'를 '장고 사용자'로 마이그레이션하는 것이 항상 가능하므로 실제로 그 문을 닫지는 않습니다.

전반적으로 나는 이것이 사용자가 무엇을 의미하는지에 달려 있다고 생각합니다.
등록 만하고 Django의 핵심 기능과 실제 상호 작용이 없다면 별도의 모델로 충분하다고 생각합니다. 특히 비교적 적은 노력으로 언제든지 마이그레이션 할 수 있기 때문입니다.
그러나 응용 프로그램의 경우 '사용자'가 장고가 사용하는 것과 매우 유사한 매핑을하면 장고 사용자 모델을 사용하게됩니다.

1

당신은 최근에 만들어진 장고 - 영장류에보고하도록 할 수 있습니다 : https://github.com/aino/django-primate

내가 한 번, 디폴트에서 상속, 사용자 정의 사용자 모델을 구축합니다. 그것은 작동하지만, 나는 그것을 권하고 싶지 않다.

2

django-primate의 저자로서 몇 가지 의견을 추가하고 싶습니다. Django-primate는 내장 된 User 모델을 쉽게 수정하도록 해줍니다. 약간의 여분이 필요하면 장고 영장류를 사용하십시오.

하지만 문제는 있지만, 나는 장고 사용자 모델 자체를 수정하는 것이 전혀 문제가 아니라고 생각합니다. 한 가지 문제는 "사용자"가 상당히 다르다는 것입니다. 관리자와 다른 사용자는 종종 관련이 없습니다. 예를 들어 관리자가 로그인 한 후 사이트에 "일반 사용자"로 로그인하려는 경우 문제가 발생할 수 있습니다. 관리자는 해당 계정이 관련되어있을 것으로 예상하지 않으며 관리자로 자동 로그인하지 않을 것으로 예상됩니다. 이것은 아무 이유없이 두통을 유발합니다. 또한 많은 다른 두통으로 인해 권장되는 관련 프로파일 모델을 구현할 수 있습니다. 예를 들어 인증 데코레이터를 사용하려는 경우 모든 프로파일에 대한 contrib 사용자와 모든 contrib 사용자에 대한 프로파일이 있는지 확인해야합니다. "사용자"의 형태와 관리가 훨씬 더 성가 시게 만듭니다. 요약하면 : 일반적으로 어떤 점에서는이 과정에서 어떤 것이 잘못 될 것입니다. 저주가 있습니다..

나는 관리자 이외의 다른 사용자를 위해 주로 contrib 사용자 모델을 포기했습니다. 다른 사용자 모델을 만드는 것은 실제로 당신이 원하는 것이지만, 그 사용자를위한 authenicating 부분을 원한다. 따라서 django contrib User의 일반적인 사용 (잘못된 이유로 사용). 이와 같은 상황에있는 경우 가장 적합한 솔루션은 해당 사용자 정의 사용자 모델에 대한 자체 인증을 작성하는 것입니다. 이것은 실제로 매우 쉽고이 방법을 충분히 추천 할 수는 없습니다. 나는 공식 권장 사항이 잘못되었다고 생각하고 대신 django에 내장 된 사용자 정의 사용자 모델 인증에 좋은 도구가되어야한다고 생각합니다.