应用程序的Django反向URL

时间:2017-03-12 09:43:01

标签: python django

我在我的Django项目中使用第三方应用程序(django-sphinxdoc),我希望能够在base.html模板中链接到它,以便可以从使用base.html的所有页面访问它,但我无法弄清楚如何做到这一点。它适用于" Home"和"管理员"如下定义。

我尝试了很多不同的变种,下面我得到了:

  

异常类型:NoReverseMatch异常值:反向   ' DOC名单'参数'()'和关键字参数' {}'不   找到。尝试了0种模式:[]

我有一个urls.py:

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

urlpatterns = [
    url(r'^', include('Myapp.urls', namespace='Myapp')),
    url(r'^admin/', admin.site.urls),
    url(r'^docs/', include('sphinxdoc.urls', namespace='Myapp-sphinxdoc'),),
]

Myapp / urls.py:

from django.conf.urls import include, url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='Myapp-index'),
    url(r'^(?P<detail_id>[0-9]+)/$', views.detail, name='Myapp-detail'),
]

我的base.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html lang="en">

<head>
  <title>{% block title %}{% endblock %}</title>
</head>

<body>
  <div class="box">
    <h1>MYAPP</h1>
    <hr>
    <a href="{% url 'Myapp:Myapp-index' %}">Home</a>
    <a href="{% url 'admin:index' %}">Admin</a>
    <a href="{% url 'Myapp-sphinxdoc:doc-list' %}">Docs</a>
    <hr>
    {% block content %}{% endblock %}
    {% block footer %}
    <hr>
      © Copyright 2017, MG
    {% endblock %}
  </div>
</body>
</html>

在sphinxdoc urls.py中,我找到了名称&#39; doc-list&#39;我想在上面提到:

urlpatterns = [
    url(r'^$', views.OverviewList.as_view(), name='docs-list',),
...

我想我不明白如何使用名称和命名空间,我们非常感谢任何建议。

/ M

1 个答案:

答案 0 :(得分:0)

嗯,现在它有效,但我真的不明白为什么...... 我纠正了nik_m和metmirr发现的拼写错误,然后我在我的根urls.py中添加了一行,这是下面的第三个url模式:

urlpatterns = [
    url(r'^', include('Myapp.urls', namespace='Myapp')),
    url(r'^admin/', admin.site.urls),
    url(r'^docs/', include('sphinxdoc.urls')),
    url(r'^docs/', include('sphinxdoc.urls', namespace='Myapp-sphinxdoc')),
]

如果我删除任何第三或第四种模式,我会收到错误。 所以,我很高兴事情正在发挥作用,但我真的很想理解为什么。