【发布时间】:2017-08-02 10:06:00
【问题描述】:
我在我的 Django 项目中使用第三方应用程序 (django-sphinxdoc),我希望能够在 base.html 模板中链接到它,以便可以从所有使用 base.html 的页面访问它,但我就是不知道该怎么做。它适用于下面定义的“Home”和“Admin”。
我尝试了许多不同的变体,并得到以下结果:
异常类型:NoReverseMatch 异常值:Reverse for 'doc-list' 带有参数 '()' 和关键字参数 '{}' 不是 成立。尝试了 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 中,我找到了我试图在上面引用的名称“doc-list”:
urlpatterns = [
url(r'^$', views.OverviewList.as_view(), name='docs-list',),
...
我想我不明白如何使用名称和命名空间,任何建议将不胜感激。
/M
【问题讨论】:
-
您能分享一个指向
sphinx网址的链接吗? -
根据
django-sphinxdoc.sphinxdoc.urls,没有名为docs-list的网址。 -
可能忘记
s应该是'Myapp-sphinxdoc:docs-list' -
哦,是的,一个错字。然而,在
urls.py中,没有这样的url。无论如何! -
感谢您的回复!你是对的,有一个错字,当我在“Myapp-sphinxdoc:docs-list”中添加“s”时,我的应用程序以三个链接开始,显示为“Home”、“Admin”和“Docs”。之前我已经在这个阶段得到了 NoReverseMatch。但是,如果我现在按下 'Docs' 链接,它会抛出 NoReverseMatch 并带有“Reverse for 'doc-index' with arguments '()' and keyword arguments '{'slug': 'Myapp}' not found. 0 pattern(s ) 尝试过:[]"。