1. multilinux

    15.11.2008 19:32

    Добрый день, господа.

    Django по умолчанию требует в имени пользователя английские буквы, цифры и знак подчеркивания. Естественно из своего приложения можно создать пользователя с именем на русском языке. Можно логиниться, админка работает, и т.п.

    Собственно вопрос- стОит ли так делать или нет?
    И если нет- какие могут возникнуть проблемы из-за этого?
  2. Иван Сагалаев

    15.11.2008 21:20

    Этого юзера нельзя будет редактировать в админке. При каждой попытке сохранения она будет ругаться на это поле.

    Плюс, теоретически, могут сломаться сторонние приложения, которые как-нибудь завязаны на то, что username, например, всегда можно привести к str, что с русскими буквами автоматически не прокатывает.

  3. Dyadya Zed

    16.11.2008 15:37

    В каком месте можно обертку написать для сторонних приложений? Чтобы при вызове str() всё было хорошо?
  4. Иван Сагалаев

    16.11.2008 22:31

    Так нельзя делать. Если приложение делает в коде str(user.username), то оно так делает, и ничто ему не помешает.

    На самом деле, задачу хранения русских букв в username решать просто не надо. Как и вообще все задачи "как бы обмануть всех и сделать модель User более другой". Вместо этого гораздо менее опасно сделать свой профиль с нужными полями и хранить все нужное в нем. А модель User признать неудачной.

  5. kit

    16.11.2008 23:05

    А если стоит задача просто разрешить тире в имени пользователя?
    Я видел, предлагался патч по этому поводу, но его отклонили.
    Как лучше сделать в этом случае? Custom auth backend?
  6. Иван Сагалаев

    16.11.2008 23:58

    Невозможно на такой вопрос конкретно ответить :-). Единого правильного подхода не бывает. Минуса хаков модели юзера я выше описал. Вполне возможно, что они не такие уж и страшные для какой-то конкретной системы... Также вполне возможно, что проще будет просто отказаться от требования иметь "-" в имени юзера. Действуйте по ситуации.

  7. kit

    17.11.2008 00:54

    Просто надо будет перевести пользователей с legacy-системы, и имен с тире там довольно много...
    Не хотелось бы людям имена пользователей менять, итак пароли скорей всего менять придется (в legacy-системе хранится хэш, но не так, как в Django).
  8. итак пароли скорей всего менять придется (в legacy-системе хранится хэш, но не так, как в Django).

    Если в md5, то приживется.

bbcode