- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
# Generate a unique username from the first part of the email address
base_name = email.split('@')[0][:25]
if User.objects.filter(username=base_name).count() == 0:
username = base_name
else:
for ii in range(1, 99999+1):
if User.objects.filter( username = base_name + str(ii) ).count() == 0:
username = email.split('@')[0][:25] + str(ii)
break
scriptin 29.01.2013 23:02 # 0
2. в чем говнокод? Вижу только неиспользование `base_name` в строке 8
wvxvw 30.01.2013 00:18 # +1
Может добавили после того, как один раз сбойнуло?
krypt 30.01.2013 05:22 # 0
LispGovno 30.01.2013 00:10 # −1
bormand 30.01.2013 05:53 # 0
lilfox 05.02.2013 03:09 # 0
2. md5 от const - const, то есть в выражении нет смысла уже так как или count() будет равен нулю или будет бесконечный цикл.
В качестве альтернативы лучше использовать uuid
Kakashulenka 31.01.2013 17:07 # +1
bormand 31.01.2013 17:46 # 0
Kakashulenka 31.01.2013 17:48 # 0
2) в данном случае это кусок backendа для мобильного приложения, там регистрации случались бы очень часто
bormand 31.01.2013 19:06 # 0
Почему 4-5? А потому что емейлов с одинаковым префиксом не так много как кажется. Ну будет [email protected], [email protected] ну еще штуки 2-3..., а тут и популярные домены кончились. Поэтому цикл отработает быстро, в 99% случаев за 1 итерацию.
Разве что злодей захочет заддосить сайт путем регистрации пачки почти одинаковых емейлов...
> там регистрации случались бы очень часто
Чаще чем пачки других запросов, порожденные работой юзера с приложением? Ну-ну. Ну и нахрен тогда нужно приложение, на котором регистрируются чаще чем им пользуются?
P.S. Оптимизните лучше более "горячий" код. Пользы будет на порядки больше.
lilfox 05.02.2013 03:22 # 0
bormand 31.01.2013 19:34 # 0
Буду рад выслушать ваше решение данной задачи.
scriptin 31.01.2013 18:14 # 0
User.objects делает запрос к базе каждый раз без кеширования?
Kakashulenka 31.01.2013 18:20 # 0
ps стоит заметить, что возможности к кешированию фреймворком заложены. но django не делает этого за программиста.
scriptin 31.01.2013 19:56 # +1
lig 13.03.2013 12:30 # 0
там как бы разные запросы.
MiEpoZc 25.08.2021 06:42 # 0