2012-12-04 128 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