簡體   English   中英

應用的Django反向URL

[英]Django reverse URL for app

我在Django項目中使用的是第三方應用程序(django-sphinxdoc),我希望能夠在base.html模板中鏈接至該應用程序,以便所有使用base.html的頁面都可以訪問它,但是我只是不知道如何做到這一點。 如下定義的“ Home”和“ Admin”一樣,它可以正常工作。

我已經嘗試了多種不同的變體,並得到以下結果:

異常類型:NoReverseMatch異常值:找不到帶有參數'()'和關鍵字參數'{}'的'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

嗯,現在可以用了,但是我不太明白為什么...我更正了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')),
]

如果刪除第三或第四種模式中的任何一種,都會出錯。 因此,我很高興一切正常,但是我真的很想知道為什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM