2017-05-08 80 views
1

我正試圖做的一個簡要說明是我試圖訪問我的'home.html'網頁(它存在於家庭應用程序),通過點擊'rates.html '網頁(存在於費率應用程序中),我嘗試實現此目的的方式如下。未找到參數'()'和關鍵字參數'{}'的'home'反向。 0模式

我查看了其他類似的問題,他們似乎都忘記在appname \ urls.py部分代碼中指定名稱空間部分。我覺得我已經在urls.py中正確地指定了app_name ='[namespace]'。

確切的錯誤,它顯示具體到我的問題是:

反向與參數「家」「()」和關鍵字參數「{}」未找到。 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')), 
] 

家\ 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通過{%url'getrate:home'%}。 getrate \ urls.py代碼包含其中的home \ urls.py。這部分被觸發,因爲它在該行代碼上有命名空間。現在它通過home \ urls.py查看並最終結束其正則表達式匹配。讓我知道我的錯誤。

謝謝你的時間。

回答

1

你會得到那個錯誤,因爲這樣的URL不存在!所有的

首先你造成不必要的混亂爲自己通過混合namespace S和app_name小號請注意

支持的APP_NAME參數使用,將在 的Django 2.0中刪除。指定APP_NAME在URL命名空間解釋和 包含的URLconf,而不是

裁判:https://docs.djangoproject.com/en/1.11/ref/urls/

其次,我真的不明白爲什麼你需要有三個獨立的urls.py文件(除非這是一個應用程序,你正在建設的重新分配)。一個主要的urls.py完全不錯,因爲你只有三個網址。

如果你想堅持這一點,請刪除app_name並只使用命名空間參數,然後重試。

+0

」您正在收到該錯誤,因爲這樣的網址不存在!「 - 我理解它的方式是獲取/ home/url。 –

+0

顯然不是。你還會怎麼得到這個錯誤? – e4c5

+0

正如我在我的回答中所提到的,您的名稱空間和app_name指令有衝突。離開了app_names – e4c5

0

雖然答案解決了直接的問題,但它並沒有實現我嘗試執行的功能(這是重定向到另一個應用程序的HTML頁面)。我沒有正確理解的是url工作流程。我認爲,無論你使用哪個應用程序,它都會先通過該應用程序的urls.py代碼,而不是主要的網站urls.py代碼。

實際的工作流程是從mysite/urls.py - >(如果導入並使用includes庫) - > app1/urls.py - > app2/urls.py - > app#/ url。 PY。所以總是在主urls.py

開始由於這個概念我的錯誤是想給每個urls.py代碼每個應用程序彼此導致各種錯誤鏈接的誤解,無限循環等

相關問題