Я нахожусь на пороге начала работы над новым webapp. Часть этого даст пользователям страницы, которые они могут настроить в отношениях от одного до многих. Эти страницы, естественно, должны иметь уникальные URL-адреса.
Оставаясь на своих устройствах, Django обычно присваивает стандартную идентификатор AUTOINCREMENT
модели. Хотя это работает фантастически, оно не выглядит великолепно, и оно также делает страницы очень предсказуемыми (что в этом случае нежелательно).
Вместо 1, 2, 3, 4 я хотел бы задать длины, произвольно сгенерированные буквенно-цифровые строки (например, h2esj4). 6 пятен возможного набора из 36 символов должны дать мне более двух миллиардов комбинаций, которые на этом этапе должны быть более чем достаточно. Конечно, если бы я мог расширить это позже, это тоже хорошо.
Но есть две проблемы:
-
Случайные строки изредка излагают плохие слова или другие оскорбительные фразы. Есть ли достойный способ обойти это? Чтобы быть справедливым, я, вероятно, мог бы согласиться на числовую строку, но у нее есть здоровенный удар по вероятности столкновений.
-
Как мне заставить Django (или базу данных) выполнять тяжелую работу над вставкой? Я бы предпочел не вставлять и затем выработать ключ (поскольку это не было бы большим количеством ключа). Я предполагаю, что есть проблемы с concurrency, которые должны быть в курсе, хотя если бы две новые страницы были сгенерированы в одно и то же время, а вторая (против всех разногласий) волшебным образом получила тот же ключ, что и первый, прежде чем было совершено первое.
Я не вижу, что это миллион миль отличается от того, как сокращают URL-адреса своих идентификаторов. Если есть достойная реализация Django, я мог бы с этим справиться.