2015-08-15 125 views
0

URL命名空間我的網址:Django的:超鏈接

url(r'^accounts/', include('allauth.urls')) 

我創建了一個超鏈接註冊,我想將用戶定向到"/accounts/signup/"。當我沒有放入命名空間時,我得到一個錯誤,當我把URL:{% url accounts:account_signup%}作爲超鏈接時,命名空間「accounts」不存在。當我把namespace="accounts"放入時,當我簡單地嘗試通過在url欄中輸入url來訪問url時,我得到一個NoReverseMatch錯誤。

爲什麼我不能只命名上述url(name="accounts"),而allauths中的網址的名稱爲"account_signup",並且只是寫作{% url accounts:account_signup%}作爲鏈接?我不明白爲什麼包含我在應用程序的任何位置不使用重複名稱時被強制命名空間。另外,我不明白爲什麼我會得到NoReverseMatch錯誤。

+0

我猜如果你使用命名空間,django-allauth不起作用:它使用它自己的沒有命名空間的URL,所以如果你使用它,它不能再找到這些URL。 – knbk

+0

@knbk所以我想這意味着我必須硬編碼鏈接?所有allauths網址都有名字。 – dylan7

+2

不,這意味着您只能使用_name_,而不能使用_namespace_。使用'{%url'account_signup'%}'(僅僅是名字)而不是'{%url'accounts:account_signup'%}'(這是一個名字空間後跟一個名字)。 – knbk

回答

0

你應該嘗試像這樣

在您的項目urls.py,你應該提供的命名空間,

url(r'^accounts/', include('allauth.urls',namespace="accounts")) 

在項目的app urls.py你應該提供的「姓名」的說法即使用這種類型的語法的網址URL呼叫的

action = {% url accounts:account_signup%} //this is the action attribute of form tag 

the url should be 

url(r'^account_signup/$',views.methodname,name='account_signup') 

通過網址與名稱參數給這個類型的網址,你會不會讓「NO反向匹配發現錯誤」

,否則你可以直接給您要重定向,類似下面的頁面的URL,在HTML

action="/accounts/create_estimate/" //this is the action attribute of form tag 

的表單標籤你並不需要直接提供給名稱參數表單標籤的action屬性中的url