URL-адреса Django - Как пройти через несколько категорий через чистый URL-адрес без необходимости? - PullRequest
1 голос
/ 10 мая 2009

Я хочу держаться подальше от GET params. Я не хочу использовать POST, и у меня есть как минимум две разные категории для создания URL.

Посетителей сначала просят выбрать местоположение, одним из которых может быть, например: http://foo.com/United-States/ || http://foo.com/United-States/California/ || http://foo.com/United-States/California/San-Francisco-Region/ || http://foo.com/United-States/California/San-Francisco/

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

http://foo.com/Electronics/ || http://foo.com/Electronics/Camera/ || http://foo.com/Electronics/Camera/Digital/ || http://foo.com/Electronics/Camera/Digital/SLR/

Итак, как бы мне было объединить оба вышеуказанных URL в один, как только они закончили с выбором местоположения и категории?

Возможно, мне потребуется ввести номер страницы для нумерации страниц. (http://foo.com/page/2/)

Я бы хотел, чтобы URL был чистым и понятным. Я знаю, как сделать один тип URL за раз, но не объединяя несколько типов.

Если бы я делал GET, я бы сделал: http://foo.com/?locid=23323&catid=335&page=2,, но я бы хотел воспользоваться чистым URL Джанго и держаться подальше от? & Вещи.

Спасибо

VN44CA

Ответы [ 3 ]

1 голос
/ 10 мая 2009

Я думаю, что это будет много информации в URL. Я предполагаю, что любое местоположение имеет свой уникальный идентификатор, то же самое относится и к категории. Почему бы не создать URL:

http://foo.com/United-States/Electronics/

http://foo.com/California/Digital/

http://foo.com/San-Francisco/SLR/

и так далее ...

2 аргумента достаточно в вашем случае. Или вы можете изменить название категории на более значимое.

http://foo.com/Electronics/Camera/Digital/ => http://foo.com/Digital-Cameras/

0 голосов
/ 18 мая 2009

Подумав некоторое время об этом, я обнаружил, что наилучшее решение (для меня) этого состоит в том, чтобы строка просто содержала все нужные мне аргументы в чистом URL.

Итак, когда пользователи впервые приходят на http://foo.com/, им предоставляется местоположение для выбора. На данный момент печенье пустое.

Итак, пользователь выбирает United-State, URL будет выглядеть как http://foo.com/12334_0_0_0/United-States/, а для файла cookie местоположения установлено значение 1234, которое является идентификатором местоположения United States.

Теперь пользователь выбирает Калифорнию, и URL меняется на http://foo.com/1235_0_0_0/United-States-California/, и cookie заменяется из Соединенных Штатов на 1235, который является идентификатором местоположения Калифорния. В этот момент пользователь выбирает категорию Электроника. поэтому URL меняется на http://foo.com/1235_3333_0_0/Electronics/, а 3333 сохраняется в категории Cookies.

Если пользователь опустится до зеркальной камеры, он увидит http://foo.com/1235_3344_0_0/SLR-Cameras/.

Таким образом, первая часть URL отслеживает до 4 аргументов, которые можно передавать, а имена (слагы) предназначены только для презентации и SEO.

Я думаю, это будет работать правильно? Было бы здорово, чтобы часть URL-адреса x_y_z_p была закодирована в некоторый случайный текст и декодирована обратно в аргументы и числа.

Дайте мне знать, что вы думаете?

0 голосов
/ 10 мая 2009

В зависимости от того, как вы используете данные о местоположении и как часто пользователь захочет изменить местоположение, его лучше хранить в сеансе, чем указывать его в URL-адресе.

Например, я вряд ли начну искать зеркальные цифровые фотоаппараты в Сан-Франциско, а затем поищу баскетбольные мячи в Балтиморе.

Очевидно, что этого будет недостаточно, если вам нужны постоянные ссылки на любую комбинацию категории местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...