3

Django 1.4를 사용하여 웹 사이트를 개발하고 있으며 가입 프로세스에 django 등록을 사용합니다. 사용자가 입력 할 때마다 유니 코드 문자가 사용자 이름으로 허용되지 않는 것으로 나타났습니다.Django 사용자 이름의 유니 코드 문자

이 값은 문자, 숫자 및 @ /./+/-/_ 문자 만 포함 할 수 있습니다.

사용자 이름에 유니 코드 문자를 사용할 수 있도록 변경할 수 있습니까? 그렇다면 어떻게 할 수 있습니까? 또한 문제가 발생할 수 있습니까?

+0

사용자 이름과 다른 필드를 검색하는 동안 utf-8로 인코딩 한 다음 저장할 수 있습니다. try -> encode ('utf-8'). –

+0

제안 해 주셔서 감사합니다. 싱가포르 사용자가 라틴 문자로 구성된 사용자 이름을 사용하여 가입하려고 할 때 위의 오류 메시지를 볼 수 있다고보고했습니다. 그는 자신의 시스템과 키보드가 한자를 입력하도록 구성되어 있으므로 양식에 입력 한 내용이 유니 코드로 인코딩되어 있는지 의심 스럽습니다. utf-8 로의 변환이이 문제를 해결할 것이라고 생각하십니까? – piokuc

+0

예, 트릭을해야합니다. 저희 사이트 www.vialogues.com를 확인 하시고, 외국어로 계정을 만드십시오. 우리는 utf-8로 변환하여 같은 것을 사용하고 있습니다. –

답변

5

정말 문제가되지 않습니다. 왜냐하면이 문자 제한은 기억할 때만 UserCreationForm (또는 django 등록의 RegistrationForm)에 있기 때문에 데이터베이스의 필드가 일반 TextField이므로 쉽게 만들 수 있습니다.

그러나 이러한 제한은 이유가 없습니다. 내가 생각할 수있는 가능한 문제 중 하나는 링크를 만드는 것입니다. 사용자 이름이 자주 사용되며 문제가 발생할 수 있습니다. 사용자 이름은

+1

귀하의 답변은 완전히 부정확합니다. 글쎄, * 전체 * 아니, 양식에 의해 부과되는 제한에 대한 비트는 정확합니다. 그러나 장고와 모든 최신 브라우저는 완전히 유니 코드입니다. 유니 코드는 URL에서 완벽하게 사용할 수 있습니다. 또한 각 유니 코드 문자는 고유 한 바이트 코드이므로 'blah'와 'blah'는 동일하지 않으며 둘 다 동시에 사용자 이름으로 사용할 수 있습니다. –

+5

브라우저가 어디에도없는 것은 아닌가? 글쎄, 전적으로 바이트 코드에 대해 이야기하는 것이 아니라 문자가 어떻게 보이고 사용자가 혼란 스러울 수 있는지에 대한 것입니다 - f.e.유니 코드에서 완전히 다른 문자열 인 "Аnnа"와 "Anna"의 차이점을 말해주십시오. 그것은 어떤 종류의 사기에 그것을 사용하는 것은 매우 가능합니다. – jasisz

+0

@jasisz 제한을 제거하기 위해해야 ​​할 일에 대해 자세히 알려주십시오. 또한 실제로 "Аnnа"와 "Anna"의 차이점은 무엇입니까? – piokuc

1

장고 1.10은 이제 공식적으로 유니 코드 사용자 이름을 지원하는 등, 같은를 찾고 있지만, 사실은 다른 문자에있는 가짜 계정의 더 큰 가능성도 있습니다, 참조 : django.contrib에서

사용자 모델을. auth는 원래 사용자 이름에 ASCII 글자 만 허용했습니다. 고의적 인 선택은 아니지만, 파이썬 3을 사용할 때 유니 코드 문자가 항상 허용되었습니다.

사용자 이름 유효성 검사기는 이제 Python 3에서만 의 기본 유니 코드 문자를 명시 적으로 허용합니다. 이 기본 동작은 사용자 모델의 username_validator 특성을 변경하거나 ASCIIUsernameValidator 또는 UnicodeUsernameValidator를 사용하여 해당 모델의 프록시로 변경하여 재정의 할 수 있습니다. 사용자 정의 사용자 모델은 유효성 검사기를 사용할 수도 있습니다.