-
Добрый день, господа.
Django по умолчанию требует в имени пользователя английские буквы, цифры и знак подчеркивания. Естественно из своего приложения можно создать пользователя с именем на русском языке. Можно логиниться, админка работает, и т.п.
Собственно вопрос- стОит ли так делать или нет?
И если нет- какие могут возникнуть проблемы из-за этого? -
Этого юзера нельзя будет редактировать в админке. При каждой попытке сохранения она будет ругаться на это поле.
Плюс, теоретически, могут сломаться сторонние приложения, которые как-нибудь завязаны на то, что username, например, всегда можно привести к
str, что с русскими буквами автоматически не прокатывает. -
В каком месте можно обертку написать для сторонних приложений? Чтобы при вызове str() всё было хорошо?
-
Так нельзя делать. Если приложение делает в коде
str(user.username), то оно так делает, и ничто ему не помешает.На самом деле, задачу хранения русских букв в username решать просто не надо. Как и вообще все задачи "как бы обмануть всех и сделать модель User более другой". Вместо этого гораздо менее опасно сделать свой профиль с нужными полями и хранить все нужное в нем. А модель User признать неудачной.
-
А если стоит задача просто разрешить тире в имени пользователя?
Я видел, предлагался патч по этому поводу, но его отклонили.
Как лучше сделать в этом случае? Custom auth backend? -
Невозможно на такой вопрос конкретно ответить :-). Единого правильного подхода не бывает. Минуса хаков модели юзера я выше описал. Вполне возможно, что они не такие уж и страшные для какой-то конкретной системы... Также вполне возможно, что проще будет просто отказаться от требования иметь "-" в имени юзера. Действуйте по ситуации.
-
Просто надо будет перевести пользователей с legacy-системы, и имен с тире там довольно много...
Не хотелось бы людям имена пользователей менять, итак пароли скорей всего менять придется (в legacy-системе хранится хэш, но не так, как в Django). -
итак пароли скорей всего менять придется (в legacy-системе хранится хэш, но не так, как в Django).
Если в md5, то приживется.


