反向 'home',未找到参数“()”和关键字参数“{}”。 0 种模式

Reverse for 'home' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s)

关于我正在尝试做的事情的简要说明是,我正在尝试通过单击 'rates.html' 网络上的徽标来访问我的 'home.html' 网页(存在于家庭应用程序中)页面(存在于费率应用程序中),我尝试实现此目的的方式如下。

我在这里查看了其他类似的问题,它们似乎都忘记了在代码的 appname\urls.py 部分指定命名空间部分。我觉得我已经正确地将 app_name = '[namespace]' 指定为 urls.py.

针对我的问题显示的确切错误是:

'home' 的反转,未找到参数“()”和关键字参数“{}”。尝试了 0 种模式:[]

错误突出显示 'rate.html' 上的一行 html 代码:

<div id="logoholder">
    <a href="**{% url 'getrate:home' %}**"><img src="{%static 
    'home/images/transparentWatermark.png' %}" width="40" height="40" 
    style="margin:5px 10px"></a>
</div>

getrate\urls.py:

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

app_name = 'getrate'

urlpatterns = [
    url(r'^$', views.ViewRate, name='rate'),
    url(r'^home/', include('home.urls', namespace='home')),
]

home\urls.py

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

app_name = 'home'

urlpatterns = [

    url(r'^$', views.ViewHome, name='home'),
]

mysite\urls.py

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^home/', include('home.urls', namespace='home')),
    url(r'^getrate/', include('getrate.urls', namespace='getrate')),
]

我必须解释错误的是 rate.html 有一个公司徽标,我可以点击它触发 getrate\urls.py via {% url 'getrate:home' %}。 getrate\urls.py 代码中包含 home\urls.py。这部分被触发,因为它在该行代码上有命名空间 home。现在它查看 home\urls.py 并最终结束它的正则表达式匹配。让我知道我错在哪里。

感谢您的宝贵时间。

您收到该错误是因为 url 不存在!

首先,您将 namespaceapp_name 混合在一起会给自己造成不必要的混淆,请注意

Support for the app_name argument is deprecated and will be removed in Django 2.0. Specify the app_name as explained in URL namespaces and included URLconfs instead

参考:https://docs.djangoproject.com/en/1.11/ref/urls/

其次,我真的不明白为什么您需要三个单独的 urls.py 文件(除非这是您为重新分发而构建的应用程序)。一个主 urls.py 就足够了,因为你总共只有三个 url。

如果您想坚持这样做,请删除 app_name 并仅使用命名空间参数,然后重试。

虽然答案解决了直接问题,但它没有实现我试图执行的功能(重定向到另一个应用程序上的 html 页面)。我没有正确理解的是 url 工作流程。我认为无论您使用哪个应用程序 url,它都会首先查看该应用程序的 urls.py 代码,而不是主要网站 urls.py 代码。

实际工作流程是从 mysite/urls.py -->(如果导入和使用包含库)--> app1/urls.py --> app2/urls.py - -> 应用#/urls.py。所以总是从主 urls.py

开始

由于对这个概念的误解,我的错误是试图 link 每个 urls.py 代码从每个应用程序到彼此,导致各种错误、无限循环等。