Начнём пост с функции генерации уникальных токенов:
# Импортируем функцию token_urlsafe из модуля secretsА теперь вспомним про моржовый оператор в Python. Писал про него 🔗тут и 🔗тут.
from secrets import token_urlsafe
# Определяем функцию generate_token с параметрами n и prefix, по умолчанию n=5, prefix='/'
def generate_token(n=5, prefix="/"):
"""Генерирует токен с префиксом для короткого url размерностью n без символа "-" в токене."""
# Входим в бесконечный цикл
while True:
# Генерируем случайный токен и добавляем префикс
token = f"{prefix}{token_urlsafe(n)}"
# Проверяем, содержит ли токен символ "-"
if "-" not in token:
# Если не содержит, то выходим из цикла
break
# Возвращаем значение переменной token
return token
Вспомнили? Тогда перепишем код покороче:
from secrets import token_urlsafeЦикл, который ничего не делает в теле цикла, много чего делает в условии цикла.
def generate_token(n=5, prefix="/"):
while "-" in (token := f"{prefix}{token_urlsafe(n)}"):
pass
return token
Забирайте лайфхак в копилку 😉