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
錯誤。
我猜如果你使用命名空間,django-allauth不起作用:它使用它自己的沒有命名空間的URL,所以如果你使用它,它不能再找到這些URL。 – knbk
@knbk所以我想這意味着我必須硬編碼鏈接?所有allauths網址都有名字。 – dylan7
不,這意味着您只能使用_name_,而不能使用_namespace_。使用'{%url'account_signup'%}'(僅僅是名字)而不是'{%url'accounts:account_signup'%}'(這是一個名字空間後跟一個名字)。 – knbk