2017-05-11 5 views
-2

Ich habe einige semi-statische Seiten in meiner Django App, die einige Informationen aus der Datenbank bekommen (Seitenname, Überschrift, etc ..).Wie können Daten aus der Datenbank basierend auf der URL abgerufen werden? Django

Zur Zeit muss ich für jede Seite eine eigene URL in urls.py erstellen und den Seitenname übergeben.

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'second', views.page, {'page_name': 'second'}), 
    url(r'first', views.page, {'page_name': 'first'}) 
] 

Gibt es eine Möglichkeit ich die page_name aus der URL stattdessen bekommen können und das entscheiden verwenden, welche Informationen aus der Datenbank zu bekommen? Ich habe so etwas versucht, wobei page_name ein Modellfeld ist.

url(r'^(?P<page_name>.*/)', views.page) 

So wie ich es verstehe, muss ich <page_name> zur Ansicht zu übergeben. Gibt es eine Möglichkeit, dies zu tun?

+0

Ja natürlich gibt es. Dies ist der grundlegende Weg, auf dem Django arbeitet, und wird im Tutorial vollständig behandelt. –

Antwort

0

Ja, Sie können & sollen

url(r'^(?P<page_name>.*/)', views.page) 

verwenden Obwohl dies im letzten Teil Ihrer urlpatterns Liste sein sollte, da es im Wesentlichen alles, was in der URL erfassen wird.

Ihre Ansicht sollte dann den Parameter als zweites Argument akzeptieren. z.B.

# views.py 
def page(request, page_name): 
    # use the page_name argument as you like 
Verwandte Themen