2013-06-19 7 views
5

Wenn ich versuche, einen Link in meiner Django Vorlage von /appname/index/ zu /appname/detail/### zu bekommen, bekomme ich stattdessen zu /appname/index/detail/### was ist nicht das, was ich versuche zu bekommen, damit meine App kann ' t finden es natürlich in der urlconf.Wie man das Attribut href in django Vorlagen verwendet

Zuerst wird die urls.py Linie für die Detailseite

url(r'detail/(?P<jobID>\d+)/$', 'appname.views.detail') 

Zusätzlich ist die Wurzel URLconf

urlpatterns = patterns('', 
    url(r'^appname/', include('appname.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

Als nächstes wird die Codevorlage versucht es

{% for job in jobList %} 
    <a href="detail/{{ job.id }}/">{{ job.name }}</a> 

zu bekommen ich Ich bin mir nicht sicher, was sonst noch Informationen sein könnten. Frag einfach, ob du etwas anderes sehen möchtest. Ich habe auch versucht:

<a href="{% url 'appname.views.detail' %}/{{ job.id }}">{{ job.name }}</a> 

Aber das hat auch nicht funktioniert. Vielen Dank im Voraus für jede Hilfe.

+0

Wie ist die Wurzel ulrconf definiert? prepend das URL-Präfix zu '/ detail ...' – karthikr

+0

hinzugefügt root urlconf – avorum

+0

dann brauchen Sie '/ appname/detail/{{job_id}} /' Check @ Aamirs zweite Antwort. Das hätte funktionieren sollen – karthikr

Antwort

20

hinzufügen / beim Start in href:

<a href="/appname/detail/{{ job.id }}/">{{ job.name }}</a> 

Und für den url Tag arbeiten Sie es so tun müssen:

<a href="{% url 'appname.views.detail' jobID=job.id %}">{{ job.name }}</a> 
+0

beide Methoden geben mir die gleiche Ziel-URL wie vor – avorum

+0

Wie Sie 'appname' URLs in Haupt-URLconf-Datei? –

+0

funktioniert gut! Vielen Dank –

0

Aus meiner Erfahrung, so lange wie Sie definiert haben Die URL der Seite, die das href Tag zu urls.py führen sollte, enthält den absoluten Pfad im folgenden Format.

Sie werden feststellen, dass das, was innerhalb des href-Tags passiert, an die aktuelle URL angehängt wird. Für dynamischere Links können Sie einige Python-DTL-Richtlinien verwenden.