Django URLs - Como passar em várias categorias através da URL limpa, sem a necessidade de?
-
20-08-2019 - |
Pergunta
Eu quero ficar longe de parâmetros GET. Não quero usar POST e eu tenho pelo menos duas categorias diferentes de construir a URL.
Os visitantes são primeiramente solicitado a escolher um local wich pode ser um dos, por exemplo: http://foo.com/United-States/ || http://foo.com/United-States/California/ || http://foo.com/United-States/California/San-Francisco -região / || http://foo.com/United-States/California/San-Francisco/
Uma vez que uma localização é seleccionado, em seguida, eles podem escolher uma categoria que pode ser um de, por exemplo:
http://foo.com/Electronics/ || http://foo.com/Electronics/Camera/ || http://foo.com/Electronics/Camera/Digital/ || http://foo.com/Electronics/Camera/Digital/SLR/
Então, como eu iria sobre a combinação de ambos os URL acima em um, uma vez que é feito com a seleção do local e a categoria?
eu poderia precisar para passar o número da página para a paginação. ( http://foo.com/page/2/ )
Eu gostaria de manter o URL limpo e auto-explicativo. Eu sei como fazer um tipo de URL em um momento, mas não combinar vários tipos.
Se eu fosse fazer um GET, então eu estaria fazendo: http: // foo.com/?locid=23323&catid=335&page=2 , mas eu gosto de tirar proveito de URL e estadia maneira limpa de Django do? & coisas.
Obrigado,
VN44CA
Solução
Eu acho que esta seria a muitas informações no URL. Presumo que qualquer local tem a sua identificação única, o mesmo vale para categoria. Por que não construir uma URL:
http://foo.com/United-States/Electronics/
http://foo.com/California/Digital/
http://foo.com/San-Francisco/SLR/
e assim por diante ...
2 argumentos são suficientes no seu caso. Ou você pode alterar o nome da categoria a ser mais significativa.
http://foo.com/Electronics/Camera/Digital/ => http://foo.com/Digital-Cameras/
Outras dicas
Dependendo de como você está usando os dados de localização, e quantas vezes um usuário vai querer alterar o local, pode ser melhor armazenado na sessão, em vez de tê-lo especificado no URL.
Por exemplo, é improvável que eu começar à procura de câmeras digitais SLR em San Francisco e, em seguida, ir à procura de bolas de basquete em Baltimore.
Obviamente, isso não será suficiente se você quiser permalinks para qualquer combinação location-categoria, no entanto.
Depois de pensar sobre isso por um tempo, descobri que a melhor solução (para mim) para isso é ter uma corda só segurar todos os argumentos que eu preciso de uma URL limpo.
Assim, quando os usuários primeiro a chegar para http://foo.com/ eles são apresentados com uma locais para selecionar. Cookies são vazia neste momento.
Assim, um usuário vai em frente e seleciona Estados-Estado, o URL será parecido com http: / /foo.com/12334_0_0_0/United-States/ eo cookie local é definido como 1234 que é o ID para a localização Estados Unidos.
Agora, o usuário seleciona as mudanças de URL Califórnia e para http://foo.com/ 1235_0_0_0 / United-States-California / e cookie é substituir a partir dos Estados Unidos em 1235, que é o id para a localização da Califórnia. Neste ponto, o usuário seleciona Categoria Electronics. de modo que os URL muda para http://foo.com/1235_3333_0_0/Electronics/ e 3333 é salvo na categoria cookies.
Se os usuários cai para SLR, então ele / ela verá http: // foo.com/1235_3344_0_0/SLR-Cameras/ .
Desta forma, a primeira parte do URL mantém o controle de até 4 argumentos que podem ser passadas ao redor e os nomes (lesmas) são apenas para apresentação e SEO.
Eu acho que isso iria funcionar direito? Seria legal ter a parte x_y_z_p do URL codificado em algum texto e decodificar volta aleatória em argumentos e números.
Deixe-me saber o que você acha?