2009-08-03 5 views
0

In meinem Django-Projekt hatte ich einen einzelnen URLConf, urls.py, an der Wurzel des Projekts. Dieses URLConf enthielt einige benannte URLs mit Djangos url()-Funktion. In mehreren Vorlagen referenziere ich diese URLs mit dem Tag url, à la {% url named_url %}. Das hat gut funktioniert.Kann ich mit dem Django-Tag "url" auf eine benannte URL in einem enthaltenen URLConf verweisen?

Die Wurzel urls.py wurde ein bisschen unhandlich, so dass ich es in eine URLConf für jede App in app/urls.py aufgeteilt. Einige URLs haben noch Namen. Leider bekomme ich jetzt eine TemplateSyntaxException, wenn Sie das url Tag in Vorlagen verwenden. Genauer gesagt, ist die Fehlermeldung:

eine Ausnahme beim Rendering: Reverse für 'myproj.myapp.new_test' mit Argumenten '()' und Keyword Argumente '{}' nicht gefunden.

Gibt es eine Möglichkeit, die genannten URLs in dem App-spezifischen URLconfs mit dem url Tag in Django zu verweisen?

Antwort

1

Sie können auf jeden Fall Referenz Urls in enthielt URLconfs über den url Tag - das ist in der Tat, was Sie angeblich sind jedoch zu tun, ich. habe immer diegefunden-Tag und die reverse()-Funktion, um sehr flockig und fehleranfällig zu sein, so dass diese Fehler manchmal auftreten.

würde Mein Vorschlag alle Ihre Urls einen Namen zu geben, egal welche URLconf sie sind dann müssen Sie auf den tatsächlichen Namen beziehen sich nur -. Sie es nicht mit dem Namen der qualifizieren müssen App oder URLconf oder irgendetwas. Schau, ob das funktioniert.

-1

kann ich Ihnen zwei Dinge empfehlen:

  • Use name in url patterns
  • Macht Referenzen nicht auf die Projektnamen innerhalb einer App (wie Sie mit „myproj.myapp.new_test“ taten Wenn dies der ". richtig zu machen“, sollten Sie nur als Referenz‚myapp.new_test‘
+1

I _am_ Namen in URL-Muster verwenden, wie ich in der Frage zur Kenntnis genommen.Und ich bin _not_ "Verweise auf den Projektnamen", aber Django gibt den vollständigen Ansichtspfad (einschließlich des Projektnamens) in seiner Fehlermeldung. – mipadi

+0

Entschuldigung. Ich habe das gelesen, aber ich dachte wegen des Fehlers anders. – Tiago

0

Verweisen Sie auf die URLs.py der jeweiligen App?

from django.conf.urls.defaults import * 

urlpatterns = patterns('', 
    (r'^app1/',  include('app1.urls')), 
    (r'^app2/', include('app2.urls')), 
) 

von Django Docs

+0

Ja. Die URLs selbst funktionieren gut (wie in, ich kann zu ihnen navigieren, ohne einen 404 zu bekommen). Es ist nur die Verwendung von {% url%}, die nicht zu funktionieren scheint. – mipadi

+0

können Sie einen Teil Ihres Codes veröffentlichen? – imjoevasquez

0

Wahrscheinlich nicht nützlich für Sie, aber hoffentlich nützlich, um den nächsten Macker Suche nach einer Antwort:

Ich verwende Django 1.4 und was es für mich gelöst wurde mit Anführungszeichen in der Template-Tag:

{% url 'name_of_view' some_var %} 

wurde dies:

{% url name_of_view some_var %} 

Und das hat es geheilt. Ich habe in den Django-Dokumenten keine Erwähnung davon gesehen, und die Beispiele in den Dokumenten verwenden Zitate. Das scheint ein bisschen buggy zu sein, aber hoffentlich wird es jemanden davon abhalten, sich die Haare auszuziehen.

https://docs.djangoproject.com/en/dev/topics/http/urls/#naming-url-patterns

Verwandte Themen