2016-10-08 10 views
1

Ich beschloss, die Titelseiten wie die Haupt-Zielseite und die "über mich" -Seite etc. an der Wurzel meines Projekts als eine andere App zu haben. Dies bedeutet, dass das Projekt wie folgt aussieht:Django-Root-Projekt URL-Namespace funktioniert nicht

/django-helloworld 

    /Hello_World 
    __init__.py 
    url.py 
    views.py 
    wsgi.py 

    /static 
    style.css 

    /templates 
    index.html 

Meine urls.py wie folgt aussehen:

from django.conf.urls import url, include 
from django.contrib import admin 

from . import views 

app_name = 'Hello_World' 
urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    url(r'^admin/', admin.site.urls), 

Das Problem ist, wenn ich versuche, auf eine URL in meiner Vorlage zu zeigen, es funktioniert, indem Sie :

<a href="{% url 'index' %}">Home</a> 

Aber wenn ich versuche, den Namensraum wie so Referenzierung:

<a href="{% url 'Hello_World:index' %}">Home</a> 

ich diesen Fehler:

NoReverseMatch at/
'Hello_World' is not a registered namespace 

Was mache ich falsch? Danke im Voraus.

+0

Ist das deine 'ROOT_URLCONF'? – knbk

+0

@knbk Wovon genau sprichst du? Bei settings.py habe ich 'ROOT_URLCONF = 'Hello_World.urls' –

Antwort

1

urls.py Sie sich beziehen in Ihrem settings.py als root URL gesetzt Es sieht wohl so aus

ROOT_URLCONF = 'Hello_World.urls'. 

Sie kann nicht Ihre Wurzel URL-Namespace, weil es nur eine Wurzel url.Namesapcing sein kann ist nur möglich, wenn mehrere App existiert.

Stattdessen können Sie den Namen der URL nennen und verwenden.

Ex: <a href="{% url 'index' %}">Home</a> 

Die oben wird in alle Ihre Vorlagen arbeiten und in allen Apps ohne Namensräume, weil die href für die urls.py Datei Ihres Projekts zunächst versuchen, wo es den Indexnamen übereinstimmen

url(r'^$', views.IndexView.as_view(), name='index'),. 

Der Grund django für django Fehler sagen Namespace nicht übereinstimmend, weil es sucht für andere apps urls.py Datei für Namespace und weil es app_name = 'Hello_World' sonst nicht übereinstimmt, wo der Fehler angezeigt wird.

Verwandte Themen