hübsch und seo-freundliche urls in django
Ich bin derzeit am schreiben eines web-Blogs, lernen django. Ich brauche eine Anzeige, um einem einzigen blog-post und mein Erster Versuch war es, erstellen Sie eine url wie die folgende:
myblog.com/blog/view/1
Diese nutzt die blog-id zum identifizieren der angegebenen blog-post.
Nun, wenn man sich viele blogs/website, sehen Sie, dass Sie den Titel von einem blog-post in der url, dies ist weil das mehr Suchmaschinen-freundlich, so kann es leichter gefunden. Dies könnte etwa so Aussehen.
myblog.com/blog/view/a-python-backup-script
Wie implementiere ich diese in django?
Bonus-Frage:
Eine Menge von Websites gehören auch der Monat und das Jahr der post. Ich denke mal das hat auch zu tun mit SEO, aber wie genau ist das sinnvoll?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie eine slug-Feld, um Ihre Blog-Modell.
In Ihrem urls.py
In views.py
EDIT: ich habe einen check in der save-Methode, weil Sie wollen, dass der slug erstellt werden soll, wenn das Objekt erstellt wird. Es sollte nicht gespeichert werden, jedes mal.
Stellen Sie sicher, dass Ihr Modell tatsächlich eine slug-Feld:
haben und dass Sie einen view:
und dann in Ihre urls.py Sie können angeben, "slug":
das erste argument ist ein regulärer Ausdruck, der, wenn abgestimmt, wird ausgeführt, die Ansicht
blog_detail
anzeigen und übergeben die abgestimmtslug
Gruppe aus dem regulären Ausdruck, um die Ansicht (die wiederum Rendern und eine Vorlage)Bezug auf Ihren letzten Punkt: ich finde, dass, ebenso wie möglicherweise die positiv in Bezug auf SEO, dass die Datumsangaben in der url macht es viel einfacher für mich, um zu sehen, wenn der blog-post ist die neue auf einen Blick. Auch in Django, es ist sehr einfach zu bedienen ist dieser Ansatz zusammen mit Datum-based generic views die reduzieren auf die Menge von boiler plate code anzeigen, den Sie schreiben müssen. Dies wäre ein Beispiel dafür:
Oder, wenn Sie mit Class-based-views, die grundlegendste Sache, die Sie tun können, ist:
Dann, die url sieht etwa so aus:
Beachten Sie, dass Djangos generic-Detailansicht erwartet, dass entweder eine pk oder eine Schnecke. So mit ein slug ist nicht anders als mit einem pk-in diesem Fall.
Ähnliche Methode ist rückwärts kompatibel mit urls, die uns eine numerische id eingereicht.
Hinzufügen slug Feld und ein speichern definition in models.py:
Fügen Sie eine zweite url-Muster in urls.py:
In views.py lassen slug passieren:
Dann alles, was Sie tun müssen, um zu verwenden Sie diese URL Muster Bearbeiten models.py:
django-autoslug funktioniert gut für diesen Zweck und hat viele nützliche Optionen.