2009-05-09 7 views
1

Ich will weg von GET params bleiben. Ich möchte POST nicht verwenden und ich habe mindestens zwei verschiedene Kategorien, um die URL zu erstellen.Django-URLs - Wie können mehrere Feeds über die saubere URL ohne Notwendigkeit weitergeleitet werden?

Die Besucher werden zuerst gebeten, einen Ort zu wählen, der zum Beispiel einer sein kann: 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/

Sobald eine Stelle ausgewählt ist, dann können sie eine Kategorie auszuwählen, die man von beispielsweise sein kann:

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

Also, wie würde ich über die Kombination beider oben genannten URL in einem gehen, sobald sie mit der Auswahl des Standorts und der Kategorie fertig sind?

Möglicherweise muss ich die Seitennummer für die Seitennummerierung übergeben.()

Ich möchte die URL sauber und selbsterklärend halten. Ich weiß, wie man einen URL-Typ gleichzeitig ausführt, aber nicht mehrere Typen kombiniert.

Wenn ich einen GET machen würde, würde ich tun: http://foo.com/?locid=23323&catid=335&page=2, aber ich mag es, Django saubere URL zu nutzen und bleiben weg von der? & Zeug.

Danke,

VN44CA

Antwort

1

Ich denke, dass dies zu viele Informationen in der URL sein würde. Ich nehme an, dass jeder Standort seine eindeutige ID hat, das gleiche gilt für die Kategorie. Warum bauen keine URL:

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

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

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

und so weiter ...

2 Argumente in Ihrem Fall genug sind. Oder Sie können den Kategorienamen ändern, um aussagekräftiger zu sein.

http://foo.com/Electronics/Camera/Digital/ =>http://foo.com/Digital-Cameras/

+0

Danke Pawel. Können Sie mir das URL-Beispiel für zwei URLs geben? etwas, das Sie in die URL.PY der Anwendung einfügen würden. So etwas nehme ich an? URL (r '^ (? P [^ /] +)/(? P [^ /] +)/$', views.item_by_location), – un33k

+0

Ja genau, ich bin kein Experte für Django (getestet es aber nie für echtes Projekt verwendet). Ich denke, es wird gut für SEO funktionieren, weil die URL nicht aufgebläht wird. – Pawel

0

Je nachdem, wie Sie die Standortdaten verwenden, und wie oft ein Benutzer möchte den Speicherort ändern, kann es am besten in der Session gespeichert wird anstatt es in der URL angegeben .

Zum Beispiel ist es unwahrscheinlich, dass ich in San Francisco nach digitalen Spiegelreflexkameras suchen und dann in Baltimore nach Basketbällen suchen werde.

Offensichtlich wird dies jedoch nicht ausreichen, wenn Sie Permalinks zu einer beliebigen Kombination aus Standortkategorie wünschen.

+0

Danke henrym, Ich habe Cookies und Sitzungen in der Vergangenheit verwendet, aber ich möchte einfach kopieren und einfügen der URL, damit die Leute die URL an andere senden können, wenn sie etwas Interessantes finden. Außerdem möchte ich für SEO-Zwecke alles in der URL haben. Danke nochmal. – un33k

0

Nachdem ich eine Weile darüber nachgedacht habe, fand ich, dass die beste Lösung (für mich) eine Zeichenfolge ist, die alle Argumente enthält, die ich in einer sauberen URL brauche.

Also, wenn Benutzer zuerst zu http://foo.com/ kommen, werden sie mit einer Position zur Auswahl vorgestellt. Cookies sind zu diesem Zeitpunkt leer.

Also, ein Benutzer geht voran und wählt United-State, die URL wird wie http://foo.com/12334_0_0_0/United-States/ aussehen und das Standort-Cookie wird auf 1234 gesetzt, die die ID für den Standort Vereinigte Staaten ist.

Jetzt wählt der Benutzer California und die URL ändert sich zu http://foo.com/1235_0_0_0/United-States-California/ und Cookie wird von United States zu 1235, die die ID für den Standort Kalifornien ist, ersetzt. An diesem Punkt wählt der Benutzer Kategorie Elektronik. Die URL ändert sich zu http://foo.com/1235_3333_0_0/Electronics/ und 3333 wird in der Kategorie Cookies gespeichert.

Wenn der Benutzer auf die SLR-Kamera herunterfährt, sieht er http://foo.com/1235_3344_0_0/SLR-Cameras/.

Auf diese Weise verfolgt der erste Teil der URL bis zu 4 Argumente, die herumgereicht werden können und die Namen (Slugs) sind nur für Präsentation und SEO.

Ich denke, das würde richtig funktionieren? Es wäre cool, wenn der x_y_z_p-Teil der URL in irgendeinen zufälligen Text kodiert wäre und wieder in args &-Nummern decodiert würde.

Lassen Sie mich wissen, was Sie denken?

+0

Sie sollten nicht http://foo.com/12334_0_0_0/ machen. Dies sollte gut funktionieren http://foo.com/12334/, es sei denn, Sie müssen wissen, dass 12334 ist x und nicht zum Beispiel y (in diesem Fall können Sie http://foo.com/0_12334/ oder sogar http://foo.com/_12334/). Die IDs sind bedeutungslos. Versuchen Sie daher nicht, den ID-Teil der URL aufzublähen. Auch würde ich Unterstrich zu Komma ändern (aber es ist ganz nach Ihren Vorlieben) – Pawel

+0

Und ... noch etwas. Warum möchten Sie die URL in einen zufälligen Text codieren? – Pawel

Verwandte Themen