2010-06-02 4 views
2

Django 1.2로 비활성화하면 사용자 이름을 이메일 주소 형식으로 사용할 수 있습니다.Django 1.2에서 이메일 스타일 사용자 이름을 django-

장고 1.2에서 변경 : 사용자 이름은 에 @, +,. 및 - 문자

나는 그것이 많이 요구되는 기능이라는 것을 알고있다.하지만 새로운 행동을 원하지 않는다면 어떨까요? 프로필 URL에 지저분한 사용자 이름을 만들고 django 등록을 중단 한 것 같습니다 (사용자가 전자 메일 스타일의 사용자 이름으로 계정을 등록하면 장고 등록 활성화 전자 메일의 링크는 404를 반환합니다).

누구나 이전 행동을 복원하고 이메일 스타일의 사용자 이름을 비활성화하는 방법이 있습니까?

답변

1

사실 장고 등록은 여기에서 문제가되지 않았습니다. 문제는 새 Help_text로 사용자 이름 필드를 다시 정의하여 RegistrationForm을 서브 클래 싱했습니다. 그렇게 함으로서, 나는 그것의 자신의 정규식 필드를 사용하는 것을 막았다. 이 문제를 해결하기 위해 RegistrationForm에서 몇 가지 비트와 조각을 내 EnhancedRegistrationForm 하위 클래스로 가져와야했습니다.

이전 스타일의 사용자 이름 문자 제한 (내가 원하는대로)을 반영하는 정규식 행에 유의하십시오.

from registration.forms import RegistrationForm 

# Carry these over from RegistrationForm - needed in the form definition below 
attrs_dict = {'class': 'required'} 
from django.utils.translation import ugettext_lazy as _ 

class EnhancedRegistrationForm(RegistrationForm): 
    first_name = forms.CharField(label='first name', max_length=30, required=True) 
    last_name = forms.CharField(label='last name', max_length=30, required=True)  
    username = forms.RegexField(regex=r'^\w+$', 
     max_length=30, 
     widget=forms.TextInput(attrs=attrs_dict), 
     help_text='Email addresses cannot be used as usernames.', 
     required=True, 
     label=_("Username"), 
     error_messages={'invalid':"You cannot use an email address as a username, sorry."})  

    class Meta: 
     fields = ('first_name','last_name','username','email','password1','password2') 


    def save(self, *args, **kwargs): 
     """ 
     Overriding save, so call the parent form save and return the new_user 
     object. 
     """ 
     new_user = super(EnhancedRegistrationForm, self).save(*args, **kwargs) 
     new_user.first_name = self.cleaned_data['first_name'] 
     new_user.last_name = self.cleaned_data['last_name'] 
     new_user.save() 
     return new_user 
1

이전 동작으로 되돌리려면 직접적인 방법은 없습니다.

가장 쉬운 방법은 요청에 따라 클라이언트 및 서버 측 사용자 이름 유효성 검사를 시행하는 것입니다. 장고 등록은 적극적으로 개발 된 구성 요소가 아니므로 그 방향에서 나오는 항목은 고려하지 않을 것입니다. 귀하의 측면에서 몇 가지 추가 유효성 검사를 추가하십시오.

야곱 on this matter을 인용 :

[...] 또 다른 일반적인 요청은 사용자 이름으로 이메일 주소의 사용을 허용하는 것입니다.

맞춤 등록/가입 양식은 수 있습니다.

+0

장고 등록이 활발하게 개발되지 않았습니까? ubernostrum이 커다란 리팩토링에 엄청난 노력을 기울여 사용자 정의 가능한 백엔드 등을 제공한다고 생각했습니다. 듣기에는 부끄러운 일입니다. 모든 프로젝트에서 사용합니다. 사실이 방법을 찾았습니다! 아래 답변. 감사 Yuval. – shacker

관련 문제