URL di Django - Come passare in più categorie tramite l'URL pulito senza necessità?
-
20-08-2019 - |
Domanda
Voglio stare lontano dai parametri GET. Non voglio usare POST e ho almeno due diverse categorie per cui creare l'URL.
Ai visitatori viene innanzitutto chiesto di scegliere una posizione che può essere una, ad esempio: http://foo.com/United-States/ || http://foo.com/United-States/California/ || http://foo.com/United-States/California/San-Francisco -Regione / || http://foo.com/United-States/California/San-Francisco/
Una volta selezionata una posizione, possono scegliere una categoria che può essere una, ad esempio:
http://foo.com/Electronics/ || http://foo.com/Electronics/Camera/ || http://foo.com/Electronics/Camera/Digital/ || http://foo.com/Electronics/Camera/Digital/SLR/
Quindi, come potrei fare per combinare entrambi l'URL di cui sopra in uno, una volta terminata la selezione della posizione e della categoria?
Potrei dover passare il numero di pagina per l'impaginazione. ( http://foo.com/page/2/ )
Vorrei mantenere l'URL pulito e autoesplicativo. So come fare un tipo di URL alla volta ma non combinare più tipi.
Se dovessi fare un GET, farei: http://foo.com/?locid=23323 & amp; catid = 335 & amp; page = 2 , ma mi piace approfittare dell'URL pulito di Django e stare lontano dall'amplificatore? &; roba.
Grazie,
VN44CA
Soluzione
Penso che questo sarebbe per molte informazioni nell'URL. Presumo che ogni posizione abbia il suo ID univoco, lo stesso vale per la categoria. Perché non creare un URL:
http://foo.com/United-States/Electronics/
http://foo.com/California/Digital/
http://foo.com/San-Francisco/SLR/
e così via ...
2 argomenti sono sufficienti nel tuo caso. Oppure puoi cambiare il nome della categoria per renderlo più significativo.
http://foo.com/Electronics/Camera/Digital/ = < !> gt; http://foo.com/Digital-Cameras/
Altri suggerimenti
A seconda di come stai utilizzando i dati sulla posizione e della frequenza con cui un utente vorrà cambiare la posizione, potrebbe essere meglio archiviarlo nella sessione invece di averlo specificato nell'URL.
Ad esempio, è improbabile che inizi a cercare fotocamere digitali reflex a San Francisco e poi vado a cercare pallacanestro a Baltimora.
Ovviamente questo non sarà sufficiente se si desidera permalink a qualsiasi combinazione posizione-categoria.
Dopo aver pensato a questo per un po ', ho scoperto che la soluzione migliore (per me) a questo è di avere una stringa semplicemente contenere tutti gli argomenti di cui ho bisogno in un URL pulito.
Quindi, quando gli utenti arrivano per la prima volta a http://foo.com/ vengono presentati con posizioni da selezionare. I cookie sono vuoti a questo punto.
Quindi, un utente va avanti e seleziona United-State, l'URL apparirà come http: / /foo.com/12334_0_0_0/United-States/ e il cookie di posizione è impostato su 1234 che è l'id per la posizione Stati Uniti.
Ora l'utente seleziona la California e l'URL cambia in http://foo.com/ 1235_0_0_0 / Stati Uniti-California / e il cookie viene sostituito dagli Stati Uniti al 1235, che è l'id della posizione California. A questo punto l'utente seleziona Categoria Elettronica. quindi l'URL cambia in http://foo.com/1235_3333_0_0/Electronics/ e 3333 viene salvato nella categoria Cookie.
Se gli utenti passano alla fotocamera SLR, vedrà http: // foo.com/1235_3344_0_0/SLR-Cameras/.
In questo modo, la prima parte dell'URL tiene traccia di un massimo di 4 argomenti che possono essere passati e i nomi (slug) sono solo per presentazione e SEO.
Penso che funzionerebbe bene? Sarebbe bello avere la parte x_y_z_p dell'URL codificata in un testo casuale e decodificare nuovamente in args & Amp; numeri.
Fammi sapere cosa ne pensi?