2017-05-20 2 views
0

Ich bin zum ersten Mal in Django plantschen und ich bin in einem einzigen Problem stecken und es macht mich verrückt. Ich versuche, eine Reihe von Seiten mit einer hierarchischen URL wie diese www.example.com/{state}/{county} zu erstellen. Im Grunde ist das Problem, das ich habe, dass ich www.example.com/{state} bekommen kann, aber ich weiß nicht, wie man das URL-System im django benutzt, um den Staat zur Staats-/Grafschaftseite zu tragen. Was ich am Ende immer ist www.example.com//{county}Erstellen von hierarchischen URLs in Django

urls.py

app_name = 'main' 
urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<pk>[A-Z]{2})/$', views.StateView.as_view(), name='state'), 
    url(r'/(?P<pk>[a-zA-Z]*)/$', views.CountyView.as_view(), name='county'), 
] 

views.py

def index(request): 
    return render(request, 'main/index.html', {}) 

class StateView(generic.ListView): 
    template_name = 'main/state.html' 
    context_object_name = 'county_list' 

    def get_queryset(self): 
     counties = [ // list of a couple counties for testing purposes] 
     return counties 

class CountyView(generic.ListView): 
    template_name = 'main/county.html' 
    context_object_name = 'water_list' 

    def get_queryset(self): 
     return WaWestern.objects.filter(water_name__contains='Orange') // hard coded for easy testing 

index.html
diese Datei groß ist, so zeige ich nur ein Beispiel für eine von meinem Zustand Verbindungen

<a id="s06" href="CA"> 

state.html

{% if county_list %} 
    <ul> 
    {% for county in county_list %} 
     <li><a href="{% url 'main:county' county %}">{{ county }}</a></li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p>No counties were found.</p> 
{% endif %} 

Ich weiß, dies alles durch das Hinzufügen einer Spalte in meinem db für den Staat gelöst werden kann, aber ich bin 100% sicher, dass dies recht einfach gelöst werden kann, ich bin nur nicht sicher, wie

Antwort

2

Ihr URL-Muster für Grafschaft ist ein wenig aus:

url(r'^(?P<state_pk>[A-Z]{2})/(?P<county_pk>[a-zA-Z]*)/$', views.CountyView.as_view(), name='county') 

Hierarchische URL-Muster funktionieren mit Einschlüssen. Hier handelt es sich nicht um eine verschachtelte URL-Struktur, daher würde sie nicht mit dem County übereinstimmen, gefolgt von State, es sei denn, Sie haben ein Regex-Muster, das dem entspricht.

Beachten Sie auch, um die Änderung des Namens RegexMuster - Sie könnten Ihre Ansichten und Vorlagen zwicken entsprechend

+0

Vielen Dank für Ihre Antwort müssen, was genau brauche ich in meinen Ansichten/Templates ändern? Sind nicht und nur Platzhalter für Variablen, die übergeben werden? – jlee

+0

Eigentlich tun sie nicht ein bisschen mehr. Die Ansicht ruft das Argument ab, das Sie für die Abfragegruppenfilterung usw. verwenden würden. Diese Antwort finden Sie beispielsweise unter http://stackoverflow.com/questions/15754122/url-parameters-and-logic-in-django-class-. based-views-templateview – karthikr

+0

nach ein bisschen Basteln konnte ich dies zur Arbeit zu bringen, danke! – jlee