2014-02-28 49 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', 
    ... 
)