2010-06-18 5 views
1

내 장고 프로젝트에서 등록 기능을 추가해야합니다. 문제는 등록 프로세스에서 어디서나 'userprofile'을 사용할 수 없다는 것입니다. 내 사용자는 '이름', '성'및 기타 데이터로 정의됩니다. 이것을 달성하는 방법? contrib.auth와 '등록'을 활성화하는 것 외에도 '사용자'응용 프로그램을 만들었습니다. user.models에는 추가 필드가있는 확장 된 사용자 모델이 있습니다. 내 프로젝트에 대한django-auth에서 'username'생성을 피하는 방법

def custom_register(request, success_url=None, 
      form_class=ExtendedRegistrationForm, profile_callback=None, 
      template_name='registration/registration_form.html', 
      extra_context=None): 

    def _create_profile(user):     
     p = UserProfile(user=user) 
     p.is_active = False 
     p.first_name = first_name 
     p.last_name = last_name 
     p.save() 

    return register(request, 
     success_url="/accounts/register/complete", 
     form_class=ExtendedRegistrationForm, 
     profile_callback=_create_profile, 
     template_name='registration/registration_form.html', 
     extra_context=extra_context, 
     ) 

또한 내가 무시 한 등록 URL을 : 나는 정의 레지스터보기를 user.views에서

class ExtendedRegistrationForm(RegistrationForm): 
    first_name = forms.CharField(
     label="First name", 
     error_messages={'required': 'Please fill the first name field'}, 
     ) 
    last_name = forms.CharField(
     label="Last name", 
     error_messages={'required': 'Please fill the last name field'}, 
     ) 

    def save(self, profile_callback=None): 
     user = super(ExtendedRegistrationForm, self).save() 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.save() 

: user.forms에서 나는 확장 된 등록 양식을 만들었습니다

url(r'^accounts/password/reset/$', 
     auth_views.password_reset, { 'post_reset_redirect' : '/', 
     'email_template_name' : 'accounts/password_reset_email.html' }, 
     name='auth_password_reset',), 
url(r'^accounts/password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 
     auth_views.password_reset_confirm, { 'post_reset_redirect' : '/accounts/login/'}, 
     name='auth_password_reset_confirm'), 
url(r'^accounts/password/reset/complete/$', 
     auth_views.password_reset_complete, 
     name='auth_password_reset_complete'), 
url(r'^accounts/password/reset/done/$', 
     auth_views.password_reset_done, 
     name='auth_password_reset_done'), 
url(r'^accounts/register/$', 
    'user.views.custom_register', 
    name='registration_register'), 
(r'^accounts/', include('registration.urls')), 

그래서 나는 '사용자 이름'을 없애고 시작하는 좋은 기반을 가지고 있습니까? 나는 username을 first_name (같은 이름을 가진 많은 사용자)으로 취급하거나 장고가 불평 할 수 있습니까?

+0

로그인 프로세스/권한 부여에서 사용자 이름을 제거해야한다는 의미입니까? –

답변

0

내가 처리해야 할 가장 쉬운 방법은 등록 프로세스에 "확장 된 사용자 프로필"항목을 포함시키지 않는 것입니다. 처음 로그인 할 때 리디렉션하거나 양식을 작성하라는 메시지를 보냅니다. 최소한이 일을 계속해야합니다. 나는 곧이 문제를 스스로 해결할 것입니다. 그래서 좀 더 구체적인 해결책을 찾으면 그것을 게시 할 것입니다.

나는 auth.models.User의 일부이므로 사용자 이름에 액세스 할 수 없다는 의미가 무엇인지 확실하지 않으므로 사용 가능합니다. 사용자가 이미 사용할 수있는 기본 필드를 무시하고 있습니까? ...

+0

사용자 이름 필드를 재정의하는 방법을 제안 할 수 있습니까? 예를 들어 속성을 빈 = True로 설정하거나 사용하지 않고 건너 뛸 수 있습니까? 그렇다면 친절하게 설명하십시오. 장고 - 인증 모델을 확장하고 있지만 사용자 이름을 사용할 필요는 없지만 장고 인증 모델을 저장하는 동안 오류가 발생합니다. – jahmed31

0

first_name 및 last_name을 기반으로 저장시 사용자 이름을 생성하지 않는 이유는 무엇입니까?

관련 문제