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
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.)
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.
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. –
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.
- 1. Benachrichtigungsalarm ähnlich wie stackoverflow-Funktionen
- 2. Wie teste ich Unit-Django-URLs?
- 3. Django-URLs mit zusätzlichen Optionen rückgängig machen
- 4. kann ich nicht meine Django URLs
- 5. Wie werden Django-URLs abgeglichen?
- 6. etwas ähnlich wie Python-DJANGO in PHP?
- 7. Wie kann ich meine Modellfelder in Django optional machen?
- 8. Wie kann ich alle URLs in "/" umschreiben?
- 9. Wie kann ich Django ManyToMany ‚durch‘ Abfragen effizienter machen?
- 10. Wie kann ich den Codeanzeige-Stil in StackOverflow implementieren?
- 11. Wie entferne ich die Sprachkennung von django-cms 2.4 URLs?
- 12. Wie kann ich Sphinx's vererbung_diagramm lesbar machen?
- 13. Wie kann ich Zeichen wie "{" in URLs setzen?
- 14. Django Middleware + URLs
- 15. Wie aus Stackoverflow in Python
- 16. Django slugified urls - wie mit Kollisionen umzugehen?
- 17. Wie kann ich Fehlerseiten in JSF machen?
- 18. Wie kann ich das in Delphi machen?
- 19. Wie kann ich Kalenderansicht in Swift machen
- 20. Wie kann diese stackoverflow-Ausnahme vermieden werden?
- 21. Wie kann ich Links in einem EditText anklickbar machen?
- 22. Logging-Anfrage URLs in Django
- 23. Tags durchsuchen wie stackoverflow?
- 24. ID + Slug Name in URL in Rails (wie in Stackoverflow)
- 25. Wie kann ich nützliche Stackoverflow-Artikel an meinen Kindle senden?
- 26. Software ähnlich wie Bitbucket, die ich selbst hosten kann
- 27. Wie eine anpassbare Benutzerumfrage in Django machen
- 28. Wie html in django Rest Rahmen machen
- 29. Wie kann man in Django gemeinsam nutzbare Links erzeugen? (ähnlich wie Pastebin-Links)
- 30. Wie würde ich diese Abfrage in Django machen?
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. –
@ Matt, wäre es nicht so schwer sein, aber warum wollen Sie? Es ist ziemlich üblich, das zu tun, was Stack Overflow macht. –
Ehrlich gesagt nicht sicher, warum ich das tun möchte. Wenn/id/slug akzeptabel ist, werde ich das tun. Danke noch einmal. –