2014-05-22 9 views
5

Ich verwende Django CMS 3 und Django 1.6 und die Standardeinstellung django polls app, und ich mache this kurze Tutorial.NoReverseMatch bei der Verwendung von Apphook ohne Namespace

Mein Problem ist, dass die PollsApp funktioniert gut, wenn es Namespace wie folgt verwendet hat:

djangocms_polls/cms_app.py:

... 
class PollsApp(CMSApp): 
    name = _("Poll App") 
    urls = ["polls.urls"] 
    app_name = "polls" 
... 

Umfragen/templates/Umfragen/index.html:

... 
{% for poll in latest_poll_list %} 
    <li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li> 
{% endfor %} 
... 

Aber wenn ich den "Umfragen:" Teil von der index.html lösche, w on't Arbeit (und es spielt keine Rolle, ob es ist oder nicht app_name Feld in PollsApp) und ich bekomme diese Fehlermeldung:

NoReverseMatch at /polls/

Exception Value:
Reverse for 'detail' with arguments '(1L,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

Warum bin ich mein Leben schwer machen, wenn alles funktioniert - Sie fragt? Weil ich Apps verwenden möchte, die keine Namespaces wie django-shop verwenden, und wenn ich apphook für django-shop erstellt habe - das gleiche Problem ist aufgetreten.

+1

Ich denke, es ist ein Fehler im Tutorial. Überprüfen Sie dies https://github.com/divio/django-cms-tutorial/issues/35 – azuax

Antwort

0

Wenn Sie Apps über einen Apphook in CMS verwenden, müssen Sie beim Erstellen von URLs in den Vorlagen einen Namespace angeben.

Allgemein glaube ich, dass es beim Erstellen von Apps meiner Ansicht nach von einem "Best Practice" -Ansatz handelt, die App- und Vorlagen-URLs immer mit Namespaces zu versehen. Wenn Sie eine App verwenden, die das Metaattribut app_name nicht verwendet, können Sie einen Namespace definieren, wenn Sie die URLs einer App in Ihr Stammverzeichnis urls.py aufnehmen. Schauen Sie sich das Beispiel hier an. https://docs.djangoproject.com/en/1.7/topics/http/urls/#reversing-namespaced-urls

Verwandte Themen