2013-05-01 73 views
0

这是我的应用程序树:Django的URL反向匹配误差

myapp/ 
    assets/ 
    statics/ 
    settings.py 
    urls.py 
    \\other stuff 
main/ 
    urls.py 
    views.py 
    templates/ 
    base.html 
    index.html 
    \\other stuff 
manage.py 

在测试我的应用程序,我有以下错误:

Error during template rendering 

In template /app/main/templates/base.html, error at line 32 
Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 

这里是涉及错误base.html的代码:

{% load i18n %} 
\\some stuff 

<a class="brand" href="{% url 'index' %}">{{ site.name }}</a> <--- this line is the error 
main/urls.py

我:

urlpatterns = patterns('', 
    (r'^$', TemplateView.as_view(template_name="index.html")), 
) 
myapp/urls.py

我:

urlpatterns = patterns('', 
         url(r'', include('main.urls'), name='index'), 

) 

有人可以告诉我什么,我做错了,为什么叫'index'无反匹配?

+0

我真的不知道该怎么做,我想提出

在主/ urls.py

“main”文件夹中的所有主页逻辑以及“myapp”文件夹内的所有应用程序配置。 – Pol0nium 2013-05-01 16:41:13

+0

我以前的评论很愚蠢,请查看答案。 – Alexandre 2013-05-01 16:42:53

回答

3

name适用于单视图,它不会与include声明一起使用。试试这个方法:

urlpatterns = patterns('', 
         url(r'^$', TemplateView.as_view(template_name="index.html"), 
          name='index'), 
) 
在MYAPP

/urls.py:

urlpatterns = patterns('', 
         url(r'', include('main.urls')), 
) 
+0

感谢您的anwser,但它给我一个语法错误。 urlpatterns的=模式( '', URL(R '^账户/',包括( 'registration.urls')), URL(R '',包括( 'main.urls')), URL( (包括('django.contrib.auth.urls')), ) – Pol0nium 2013-05-01 16:51:34

+0

恐怕我不能只有用这些信息才能帮助你。这是'main.urls'中的所有东西吗?这是错误所说的一切吗? – 2013-05-01 16:58:00

+0

你可能会遇到正则表达式'r'''的问题请注意,当django试图通过它的url发现视图时,它会从上到下检查你的根urls.py。如果在中间添加该正则表达式,它将首先检查您的'main.urls'中的url。所以你可能与其他url文件有冲突。 – 2013-05-01 17:00:34