2012-12-04 91 views
6

我对Django仍然很陌生,并且有几个关于如何使用内置视图工作的问题。我注意到,djang在django.contrib.auth.views.password_change中带有内置的密码更改视图。该视图在模板的后台显示管理站点,但我想提供自己的CSS /模板,但保留该视图的形式和功能。我将如何做到这一点?你能通过什么东西进入urls.pyDjango密码更改查看表格

r'password_change/$', 'django.contrib.auth.views.password_change') 

像一个自定义模板?我不确定这样做的正确方法。

回答

11

您可以指定要通过设置template_name参数中使用的模板:

(r'password_change/$', 'django.contrib.auth.views.password_change', {'template_name': 'path/to/password_reset.html'}) 

在模板确保您使用所提供的{{ form }}模板变量和你很好走。

6

Django将尝试首先从应用程序加载模板,然后回退。所以,来覆盖contrib.auth模板,你只需要:

  1. 创建一个在你的模板目录下名为auth目录。
  2. 创建一个与内置视图期望加载的名称相同的模板。
  3. 没有步骤3
+0

是不是周围那么其他的办法吗?首先在项目模板目录中,然后回到应用程序? – Alvaro

+0

“你的应用程序”我的意思是Django项目。我在“步骤1”中引用的模板目录是* project *中的主要模板目录。如果添加一个与Django中已存在的目录同义的目录,那么您的模板目录将覆盖内置目录。 – Brandon

0

您也可以提供一个URL与成功的变革:

url(r'^password/$', 'django.contrib.auth.views.password_change', {'post_change_redirect' : '/password-changed/','template_name': 'password.html'},), 
+1

castilo,您是在回答接受的答案或问题吗?尝试让你的答案在这方面更清晰一点 – Miki