2011-05-27 71 views
2

在輸入電子郵件地址並按下按鈕後,我的Django站點的password_reset頁面導致DoesNotExist異常。Django密碼重置 - DoesNotExist例外

爲密碼復位功能所需的四個URL是在(主項目)urls.py爲:

(r'^password_reset/$', 'appname.views.cust_password_reset'), 
(r'^password_reset/done/', 'appname.views.cust_password_reset_done'), 
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'appname.views.cust_password_reset_confirm'), 
(r'^reset/done/$', 'appname.views.cust_password_reset_complete') 

以下是用於關聯的視圖的代碼:

def cust_password_reset(request): 
    return password_reset(request, post_reset_redirect='password_reset/done',template_name='registration/password_reset_done.html') 

def cust_password_reset_done(request): 
    return password_reset_done(request, template_name='registration/password_reset_done.html') 

def cust_password_reset_confirm(request, uidb36=None, token=None): 
    return password_reset_confirm(request, uidb36=uidb36, token=token, 
    template_name='registration/password_reset_confirm.html', 
    post_reset_redirect='registration/reset/done/') 

def cust_password_reset_complete(request): 
    return password_reset_complete(request, 
    template_name='registration/password_reset_complete.html') 

電子郵件地址被正確檢查有效性,但重定向到password_reset/done似乎沒有發生。 URL保持爲password_reset,但會導致具有值「站點匹配查詢不存在」的DoesNotExist異常。

當手動訪問時,URL和模板似乎正常工作,並且password_reset/done顯示正確。
引用的模板是原始Django模板的精確副本,只添加了頁眉/頁腳。不使用自定義視圖/模板的密碼重置會導致相同的錯誤。

任何想法可能會導致這將不勝感激。

回答

2

該錯誤「站點匹配查詢不存在」意味着settings.py中的SITE_ID與數據庫中的實際對象Site不匹配。檢查您的網站的id屬性,並確保它與SITE_ID相同。

+0

settings.py中的'SITE_ID'是1,我不是(有意至少)在其他任何地方改變它。在發生錯誤時顯示的請求信息的設置部分中,'SITE_ID'也是1,但這似乎直接來自settings.py。有可能password_reset視圖中的某些內容可能會自動更改ID? – caroline 2011-05-30 08:14:58

+0

該錯誤非常明確;只有一件事會導致這種情況。檢查你的數據庫,並確保site_id是1。 – 2011-05-31 14:23:05

+0

它看起來好像根本沒有數據庫中的「Site」對象 - 當我添加一個時,它被賦予了'id' 1,現在密碼重置完美地工作 - 感謝您的幫助。 – caroline 2011-05-31 15:26:21