[Django] - SLUGIFIED Verlinkungen - wie ?!

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
bugzz
User
Beiträge: 20
Registriert: Donnerstag 17. Juni 2010, 11:38

Guten Tag, Experten
Haber wieder eine Frage. Vor paar Tagen bin Ich auf diesen Blog gestossen. Dort habe ich gesehen wie der "Eigentümer/Entwickler" des Bloges die Verlinkung zur Blog-Einträge realisiert hat. Und zwar, jeder Link zum Blog-post sieht so aus: jeder Blog-post hat eine Headline(Schlagzeile), diese werden mittels template-filter SLYGIFY in SLUGIFIED Headline umgewandelt und als Verlinkung verwenden. Beislpiel:

Shalgzeile: Flojax: A unobtrusive and easy strategy for creating AJAX-style web applications
ULR: http://webseite.domain/blog/post/flojax-unobtrusive-and-easy-strategy-creating-ajax/

Das zu realiseren ist keine grose Sache, da es den SLUGIFY template-filter gibt. ABER!, wie ist das möglich? Ich mein, natürlich kann man die Schlagzeile ausm URL 'rausschneidem'

Code: Alles auswählen

.....
(r'^/blog/post/(?P<slugified_post_headline>\w+)/$'), views.get_post),
...
aber diesen string kann man doch nicht als einen direkten (wie z.B POST-ID) 'verweiss' zur einem (und nur einem) Blogeintag verwenden, oder ?

Natürlich könnte man dann QEURY-STRING verwenden wie z.B.:

http://webseite.domain/blog/post/flojax-unobtrusive-and-easy-strategy-creating-ajax?post_id=5

dann aber ist das keine schöne und saubere URL mehr.


Ideen ?
Deutsch ist nicht meine Muttersprache
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

So einen slug speichert man am besten in der Datenbank. Wenn der slug schon existiert hängt man halt eine Zahl dran, so lässt sich am einfachsten sicherstellen dass er nur einmal vorkommt.
Benutzeravatar
bugzz
User
Beiträge: 20
Registriert: Donnerstag 17. Juni 2010, 11:38

Hmm die Gedanke hatte Ich auch, hielt diese aber für 'unprofessionell' und hatte gehofft, es gäbe eine 'elegante' Lösung/Art und Weise werte 'behind the scenes' weiter zu geben.
Naja, bin dann bei /blog/post/post-id/slugified-headline/ Variante geblieben
Deutsch ist nicht meine Muttersprache
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

bugzz hat geschrieben:Hmm die Gedanke hatte Ich auch, hielt diese aber für 'unprofessionell' und hatte gehofft, es gäbe eine 'elegante' Lösung/Art und Weise werte 'behind the scenes' weiter zu geben.
Das ist die professionelle elegante Lösung.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

DasIch hat geschrieben:
bugzz hat geschrieben:Hmm die Gedanke hatte Ich auch, hielt diese aber für 'unprofessionell' und hatte gehofft, es gäbe eine 'elegante' Lösung/Art und Weise werte 'behind the scenes' weiter zu geben.
Das ist die professionelle elegante Lösung.
Im Gegensatz zu der Variante, die Id in der URL mitzugeben ;)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
bugzz
User
Beiträge: 20
Registriert: Donnerstag 17. Juni 2010, 11:38

Hmm das hätte ich echt nie gedacht. :shock:
Extra DB-Spalte mit dem slug-version statt id in URL... :K
Deutsch ist nicht meine Muttersprache
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bugzz hat geschrieben:Extra DB-Spalte mit dem slug-version statt id in URL... :K
Wieso, was ist daran auszusetzen? Man hat natürlich dass Problem dass es Out of Date ist, wenn man den Titel ändert, aber üblicherweise aktualisiert man das Slug-Feld danach nicht mehr, um die URL nicht kaputtzumachen. Letztendlich ist der (die? das?) Slug auch nur eine Art ID, die zu "Blogartikelerstellungszeit" generiert wird. Nur dass sie halt nicht numerisch ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
bugzz
User
Beiträge: 20
Registriert: Donnerstag 17. Juni 2010, 11:38

Ok. Profis sind für slugified-field im DB, vielleicht soll mans ausprobieren :)

Dann mal eine andere Frage. Wie realisiert man das. Im moment verwende ich ADMIN panel um die Daten hinzuzufügen.
Wie weit ich weis, admin modul enthält einige geile features um sich: erstens - in den app integrieren zu können und zweites - den UI des admin-panels bezüglish eines bestimmten App anzupassen. Ich vemute aber, dieses verfahren mit dem Slug ist nicht in der feature liste, oder? Wahscheinlich muss man das vom Hand programmieren, ja ?
Deutsch ist nicht meine Muttersprache
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Du musst dir halt deine Admin Seite customizen und das vllt. mit einem kleinen Javascript realisieren und per Ajax den Titel slugify'en.
Benutzeravatar
bugzz
User
Beiträge: 20
Registriert: Donnerstag 17. Juni 2010, 11:38

ahojnnes hat geschrieben:Du musst dir halt deine Admin Seite customizen und das vllt. mit einem kleinen Javascript realisieren und per Ajax den Titel slugify'en.
Ich denke sowas gibts schon vorgefertigt. Habe bisschen gegoogelt und habe das hefunden (ModelAdmin.prepopulated_fields)
Ich denke, Ich soll damit ein bisschen rumspielen...Wie es aussieht, es sönnte tatsächlich eine Mischung aus SlugField() in der DB(Model) und automatische 'Slugifizierung' und 'Einfügung' der Shalgzeile (oder wie-auch-immer) in den SlugField in der DB sein
Deutsch ist nicht meine Muttersprache
Antworten