2014-02-28 50 views
0

我使用Django 1.6和Django的註冊1.0Django的註冊密碼重置在管理模板拉動

我必須明確指定復位URL

url(r'^password/reset/done/$', password_reset_done, name='password_reset_done'),

但它一直在拉管理模板。

爲什麼會發生這種情況? 我如何覆蓋這個自定義模板?

UPDATE: 試過以下,它仍然拉在管理模板...

url(r'^password/reset/', password_reset, 
     {'template_name': 'registration/password_reset_form.html'}, name='password_reset'), 
url(r'^accounts/password/reset/done/$', password_reset_done, 
     {'template_name': 'registration/password_reset_done.html'}, name='password_reset_done'), 

回答

0

我相信password_reset_done是Django的內置應用程序之一的方法。你可以閱讀更多有關此身份驗證的應用程序上the official doc here.

Django's url dispatcher allows to pass extra options to a view function.Luckilypassword_reset_done函數接受可選參數,如template_namecurrent_appextra_context

把這些放在一起,你可以做到以下幾點:

url(r'^password/reset/done/$', password_reset_done, {'template_name': PATH_TO_YOUR_CUSTOM_TEMPLATE}, name='password_reset_done'), 

要了解更多關於url功能,請閱讀this API doc

+0

似乎沒有區別。它仍然拉入管理員模板... –

0

INSTALLED_APPS(位於settings.py)中應用程序列表的順序是Django用來查找模板的順序。如果兩個模板共享相同的名稱,那麼首先列出的應用程序將獲勝。這意味着在INSTALLED_APPS中,您需要確保'django.contrib.admin'應用程序在任何應用程序包含您希望使用的模板文件(大概是「註冊」應用程序)之後。像這樣:

# settings.py 
... 
INSTALLED_APPS = (
    ... 
    'registration', # Or whichever app contains the template you want to use 
    'django.contrib.admin', 
    ... 
)