Django URLs - Como passar em várias categorias através da URL limpa, sem a necessidade de?

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

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

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top