Django URLs - Comment passer dans plusieurs catégories via l'URL propre sans avoir besoin de?

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

Question

Je veux rester à l'écart des paramètres de GET. Vous ne voulez pas utiliser POST et j'ai au moins deux catégories différentes pour construire l'URL.

Les visiteurs sont d'abord invités à choisir un emplacement qui peut être l'un des suivants: http://foo.com/United-States/ || http://foo.com/United-States/California/ || http://foo.com/United-States/California/San-Francisco -Région / || http://foo.com/United-States/California/San-Francisco/ / a>

Une fois qu'un lieu est sélectionné, ils peuvent choisir une catégorie qui peut être l'une des suivantes:

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

Alors, comment pourrais-je combiner les deux URL ci-dessus en une seule fois la sélection de l'emplacement et de la catégorie?

Je pourrais avoir besoin de donner le numéro de page pour la pagination. ( http://foo.com/page/2/ )

J'aimerais que l'URL soit propre et explicite. Je sais faire un type d'URL à la fois, mais je ne combine pas plusieurs types.

Si je devais faire un GET, je le ferais: http://foo.com/?locid=23323 & amp; catid = 335 & amp; page = 2 , mais j'aime bien profiter de l'URL épurée de Django et rester en ligne de compte à partir de? & amp; des trucs.

Merci,

VN44CA

Était-ce utile?

La solution

Je pense qu'il s'agirait de nombreuses informations dans l'URL. Je suppose que chaque emplacement a son identifiant unique, il en va de même pour la catégorie. Pourquoi ne pas créer une URL:

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

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

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

et ainsi de suite ...

2 arguments suffisent dans votre cas. Vous pouvez également modifier le nom de la catégorie pour lui donner plus de sens.

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

Autres conseils

En fonction de votre utilisation des données d'emplacement et de la fréquence à laquelle un utilisateur souhaite changer d'emplacement, il peut être préférable de le stocker dans la session au lieu de le spécifier dans l'URL.

Par exemple, il est peu probable que je recherche des appareils photo numériques reflex à San Francisco, puis des balles de basket à Baltimore.

Évidemment, cela ne suffira pas si vous souhaitez des liens permanents vers n'importe quelle combinaison emplacement-catégorie.

Après y avoir longuement réfléchi, j’ai trouvé que la meilleure solution (pour moi) consiste à faire en sorte que la chaîne ne contienne que tous les arguments nécessaires dans une URL vierge.

Ainsi, lorsque les utilisateurs accèdent pour la première fois à http://foo.com/ ils sont présentés avec un emplacement à sélectionner. Les cookies sont vides à ce stade.

Ainsi, un utilisateur choisit United States, l’URL ressemblera à http: / /foo.com/12334_0_0_0/United-States/ et le cookie d'emplacement est défini sur 1234, identifiant de l'emplacement pour l'emplacement États-Unis.

L'utilisateur sélectionne maintenant Californie et l'URL devient http://foo.com/ 1235_0_0_0 / United-States-California / et le cookie est remplacé à partir des États-Unis par le numéro d'identification 1235, qui est l'identifiant de l'emplacement California. À ce stade, l'utilisateur sélectionne Catégorie Electronics. l'URL devient donc http://foo.com/1235_3333_0_E/Electronics/ et que 3333 est enregistré dans la catégorie Cookies.

Si les utilisateurs accèdent à l’appareil photo reflex, ils verront alors http: // foo.com/1235_3344_0_0/SLR-Cameras/ .

De cette façon, la première partie de l'URL garde la trace de 4 arguments pouvant être transmis et les noms (slugs) sont simplement destinés à la présentation et au référencement.

Je pense que cela fonctionnerait bien? Ce serait bien d’avoir la partie x_y_z_p de l’URL encodée dans du texte aléatoire et redécodée en args & Amp; chiffres.

Dites-moi ce que vous pensez?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top