2010-02-26 3 views
5

Ich erstelle eine Video-Website. Ich möchte, dass meine direkten URLs zu einem Video wie beispiel.de/watch/this-is-a-slug-1 aussehen, wobei 1 die Video-ID ist. Ich will nicht, dass die Schnecke etwas ausmacht. example.com/watch/thisis-another-slug-1 sollte auf dieselbe Seite zeigen. Auf SO ist/questions/id der einzige Teil der URL, auf den es ankommt. Wie kann ich das machen?Wie kann ich URLs in Django ähnlich wie stackoverflow machen?

Antwort

8

Stack-Überlauf verwendet die Form

example.com/watch/1/this-is-a-slug 

, die einfacher zu handhaben ist. Sie öffnen eine Dose Würmer, wenn Sie die ID sein am Ende des Rohlings Token wollen, da dann wird es (zum Beispiel) beschränken, welche Arten von Schnecken können Sie verwenden, oder einfach nur machen es schwieriger, auf sich selbst.

Sie können einen URL-Handler wie verwenden:

(r'^watch/(?P<id>\d+)/', 'watch') 

nur die ID zu greifen und etwas nach dem ID ignorieren. (Hinweis: Es gibt kein $ Zeilenende-Zeichen.)

+0

Hmm, danke für diesen Rat. Wäre es schwierig, die ID zu erhalten, wenn es example.com/watch/1-this-is-a-slug wäre? Auch, wenn diese Fragen dumm erscheinen, tut es mir leid! Dies ist die erste Seite, die ich gerade entwickle, anstatt nur zu entwerfen und zu verlegen. Also danke für deine Hilfe. –

+0

@ Matt, wäre es nicht so schwer sein, aber warum wollen Sie? Es ist ziemlich üblich, das zu tun, was Stack Overflow macht. –

+0

Ehrlich gesagt nicht sicher, warum ich das tun möchte. Wenn/id/slug akzeptabel ist, werde ich das tun. Danke noch einmal. –

-3

Bei allem Respekt gegenüber Stackoverflow ist dies der falsche Weg. Sie sollten nicht zwei Elemente in der URL angeben müssen, die die Seite identifizieren. Die ID ist irrelevant - es ist Junk. Sie sollten in der Lage sein, eine Seite aus dem Slug allein eindeutig zu identifizieren.

+4

Was ist mit doppelten Titeln? Oder die Tatsache, dass Charaktere einfach aus der Schnecke entfernt werden? Fragen Titel „Pointers in C++“ und „Pointers in C“ würden beide den gleichen Slug bekommen, und es wäre unmöglich, eine Frage mit einem bestehenden Titel, oder der alten Frage unzugänglich würde zu schaffen. Die ID ist die eindeutige Kennung, und die Slug ist für Mensch/Suchmaschine/etc Freundlichkeit. –

0

Ich habe verwendet Django nicht, aber ich habe vor MVC-Frameworks verwendet. Im Allgemeinen haben sie eine Art URL-Routing-Funktion, mit der Sie ein Muster (normalerweise einen regulären Ausdruck) definieren können, das einem Controller zugeordnet wird.

Dies könnte ein guter Anfang sein: http://docs.djangoproject.com/en/dev/topics/http/urls/

Als Jesse Beder, erklärte würden Sie den regulären Ausdruck nur müssen uns darauf, die erste URL-Segment (/ watch) und eine numerische ID übereinstimmen, und dann, dass zu ein Uhr-Controller, der mit der ID umgehen und den Slug ignorieren würde.

Verwandte Themen