URL de Django: ¿cómo pasar en varias categorías a través de la URL limpia sin necesidad de hacerlo?

StackOverflow https://stackoverflow.com/questions/844276

Pregunta

Quiero alejarme de los parámetros GET. No quiero usar POST y tengo al menos dos categorías diferentes para construir la URL.

Primero se pide a los visitantes que elijan una ubicación que pueda ser, por ejemplo: 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/

Una vez que se selecciona una ubicación, pueden elegir una categoría que puede ser, por ejemplo:

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

Entonces, ¿cómo haría para combinar ambas URL anteriores en una, una vez que hayan terminado de seleccionar la ubicación y la categoría?

Es posible que deba pasar el número de página para la paginación. ( http://foo.com/page/2/ )

Me gustaría mantener la URL limpia y autoexplicativa. Sé cómo hacer un tipo de URL a la vez pero no combinar varios tipos.

Si tuviera que hacer un GET, entonces estaría haciendo: http://foo.com/?locid=23323 & amp; catid = 335 & amp; page = 2 , pero me gusta aprovechar la URL limpia de Django y mantenerme en forma del amplificador? &; cosas.

Gracias,

VN44CA

¿Fue útil?

Solución

Creo que esto sería para mucha información en la URL. Supongo que cualquier ubicación tiene su ID única, lo mismo pasa con la categoría. ¿Por qué no construir una URL:

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

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

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

y así sucesivamente ...

2 argumentos son suficientes en su caso. O puede cambiar el nombre de la categoría para que sea más significativo.

http://foo.com/Electronics/Camera/Digital/ = < !> gt; http://foo.com/Digital-Cameras/

Otros consejos

Dependiendo de cómo esté utilizando los datos de ubicación y con qué frecuencia un usuario querrá cambiar la ubicación, es mejor que se almacene en la sesión en lugar de especificarla en la URL.

Por ejemplo, es poco probable que comience a buscar cámaras digitales SLR en San Francisco y luego vaya a buscar pelotas de baloncesto en Baltimore.

Obviamente, esto no será suficiente si quieres enlaces permanentes a cualquier combinación de ubicación y categoría.

Después de pensar en esto por un tiempo, descubrí que la mejor solución (para mí) es tener una cadena que contenga todos los argumentos que necesito en una URL limpia.

Entonces, cuando los usuarios llegan por primera vez a http://foo.com/ se les presentan ubicaciones para seleccionar. Las cookies están vacías en este momento.

Entonces, un usuario continúa y selecciona Estados Unidos, la URL se verá como http: / /foo.com/12334_0_0_0/United-States/ y la cookie de ubicación se establece en 1234, que es la identificación de la ubicación de Estados Unidos.

Ahora el usuario selecciona California y la URL cambia a http://foo.com/ 1235_0_0_0 / Estados Unidos-California / y la cookie se reemplaza desde Estados Unidos a 1235, que es la identificación de la ubicación de California. En este punto, el usuario selecciona Categoría Electrónica. así que la URL cambia a http://foo.com/1235_3333_0_0/Electronics/ y 3333 se guarda en la Categoría Cookies.

Si los usuarios se dirigen a la cámara SLR, verá http: // foo.com/1235_3344_0_0/SLR-Cameras/ .

De esta manera, la primera parte de la URL realiza un seguimiento de hasta 4 argumentos que se pueden pasar y los nombres (slugs) son meramente para presentación y SEO.

Creo que esto funcionaría ¿verdad? Sería genial tener la porción x_y_z_p de la URL codificada en algún texto aleatorio y decodificar nuevamente en args & Amp; números.

Déjame saber lo que piensas?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top