2016-10-08 1 views
1

私は、メインのランディングページや「私について」ページなどを、別のアプリケーションとしてプロジェクトのルートに置くことに決めました。このプロジェクトは、このようになります意味:DjangoルートプロジェクトのURLネームスペースが機能しない

/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が あなたのsettings.pyにルートURLとして設定されていることは、おそらく唯一の1つのルートurl.Namesapcingが存在する可能性があるためあなたのルートURLを名前空間カントこの

ROOT_URLCONF = 'Hello_World.urls'. 

のように見えます複数のアプリが存在する場合にのみ実行されます。

代わりに、urlの名前を挙げて使用することができます。

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

以上、それは名前のインデックス

url(r'^$', views.IndexView.as_view(), name='index'),. 
と一致する場所のhrefは、最初にプロジェクトのurls.pyファイルのためにしようとしますので、名前空間をせずに、テンプレートのすべてに、すべてのアプリケーションで動作します

djangoのdjangoエラーが原因でネームスペースが一致しないというエラーが発生しました。他のアプリケーションを検索していました。namespaceのurls.pyファイルと一致しません。app_name = 'Hello_World'以外のエラーが表示されます。