Django - дизайн URL и лучшие практики для идентификации одного объекта

Я на самом деле работаю в проекте django, и я не уверен в лучшем формате URL-адреса для доступа к одной конкретной странице объекта.

Я думал об этих альтернативах:

1) Using the autoincremental ID => .com/object/15

Это самый простой и хорошо известный способ сделать это. id_object - это автоинкрементный идентификатор, сгенерированный ядром базы данных при сохранении объекта. Проблема, которую я обнаружил в этом случае, заключается в том, что URL-адреса легко итерируются.Таким образом, мы можем создать простой скрипт и посетить все страницы, увеличив идентификатор в URL-адресе. Может проблема с безопасностью.

2) Using a <hash_id> => .com/object/c30204225d8311e185c3002219f52617

«hash_id» должен быть некоторым буквенно-цифровым строковым значением, сгенерированным, например, с помощью функций uuid. Это хорошая идея, потому что она не повторяется. Но создание "случайных" уникальных идентификаторов может вызвать некоторые проблемы.

3) Using a Slug => .com/object/some-slug-generated-with-the-object

Django поставляется с полем «slug» для моделей, и его можно использовать для идентификации объекта в URL-адресе. Проблема, которую я обнаружил в этом случае, заключается в том, что ярлык может изменяться со временем, генерируя неработающие URL-адреса. Если какая-то поисковая система, такая как Google, проиндексировала этот неработающий URL, пользователи могут быть перенаправлены на «не найденные» страницы, и рейтинг нашей страницы может снизиться. Решением может стать замораживание Slug. То есть сохранять слаг только в действии «Добавить», а не в действии «Обновить». Но теперь пуля может представлять что-то старое или неправильное.

Все варианты имеют достоинства и недостатки. Возможно, их сочетание может вызвать некоторые проблемы. Что вы об этом думаете?

9
задан Oscar Mederos 22 March 2012 в 02:55
поделиться