2016-10-08 2 views
1

Я решил использовать передние страницы, такие как главная целевая страница и страница «обо мне» и т. Д., В корне моего проекта, а не как другое приложение. Это означает, что проект выглядит следующим образом:Пространство имен URL-адресов проекта Django root не работает

/django-helloworld 

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

    /static 
    style.css 

    /templates 
    index.html 

Мой urls.py выглядит следующим образом:

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), 

Проблема заключается в том, когда я пытаюсь указать на URL в шаблоне, он работает, делая :

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

Но если я пытаюсь ссылки пространства имен следующим образом:

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

Я получаю эту ошибку:

NoReverseMatch at/
'Hello_World' is not a registered namespace 

Что я делаю неправильно? Заранее спасибо.

+0

Это ваш «ROOT_URLCONF'? – knbk

+0

@knbk Что именно вы говорите? В settings.py у меня есть ROOT_URLCONF = 'Hello_World.urls'' –

ответ

1

urls.py вы имеете в виду устанавливается в качестве корневого URL в вашем settings.py Это, вероятно, выглядит следующим образом

ROOT_URLCONF = 'Hello_World.urls'. 

Вы не можете пространства имен корневого URL, потому что может быть только один корень url.Namesapcing выполняется только при наличии нескольких приложений.

Вместо этого вы можете указать имя URL-адреса и использовать его.

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

выше будет работать во всех шаблонах и во всех приложениях без, потому что разделяет пространства имен HREF будет первым попробовать для urls.py файл вашего проекта, где он будет соответствовать индексу имя

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

Причина django для ошибки django, говорящего, что пространство имен не соответствует beacuse, оно ищет другие файлы urls.py apps для пространства имен и потому, что оно не совпадает с именем app_name = 'Hello_World', где отображается ошибка.