2009-01-15 26 views
8

Tôi muốn ghi đè lên trang "Thay đổi mật khẩu" của quản trị viên Django (change_password.html). Như vậy, tôi đã đặt "/contrib/admin/templates/registration/password_change_form.html" của Django vào thư mục "/templates/admin/registration/password_change_form.html" của dự án của tôi. Thật không may, điều này dường như không làm các trick.Làm cách nào để ghi đè trang mật khẩu thay đổi hành chính của Django?

Tại thời điểm này, tôi bị bối rối. Tôi đoán nó có cái gì để làm với Django của /contrib/auth/urls.py tập tin (mà chỉ đạo các cuộc gọi thay đổi mật khẩu quản trị để "django.contrib.auth.views.password_change"), nhưng thay đổi mẫu admin đã được tầm thường cho đến nay và tôi ngạc nhiên rằng cái này không phù hợp.

Mọi suy nghĩ?

+0

không settings.TEMPLATE_DIRS của bạn trông như thế nào? – bchhun

+0

Nó có "'./templates',". Tôi không chắc đó là vấn đề. Tôi có thư mục "/ templates/admin" và không được xác định rõ ràng trong TEMPLATE_DIRS – Huuuze

Trả lời

6

Một cái nhìn nhanh chóng tại nguồn cho thấy bạn nên đặt mẫu trong:

/templates/registration/password_change_form.html 

Note lợi ích: không có 'admin /' trong đó.

+0

Bạn đã xem giải pháp đó ở đâu? Tôi chắc đã bỏ qua nó. – Huuuze

+0

Tôi đọc nguồn. Tất nhiên, trên một vượt qua thứ hai, tôi tìm thấy nó trong tài liệu Djanog một http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.django.contrib.auth.views.password_change –

+0

Nhìn vào danh sách tham số của hàm 'password_change' trong django/contrib/auth/views.py – ayaz

1

Tôi đã gặp vấn đề tương tự; Tôi tin rằng nó đã làm như thế nào django mẫu tải làm việc.

Nếu bạn đang sử dụng một cái gì đó giống như

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader', 
'django.template.loaders.app_directories.Loader', 
) 

Với một cái gì đó giống như TEMPLATE_DIRS = ( os.path.join (PROJECT_DIR, 'mẫu'), )

Sau đó, bạn sẽ hy vọng rằng (nơi localstore là tên của phần ghi đè satchmo cục bộ của bạn) localstore/templates/registration/password_change_form.html sẽ hoạt động. Tuy nhiên, nó không cho password_change_form vì admin đang ghi đè nó. Vì vậy, nó đi một cái gì đó như:

  1. file loader mẫu dirs (ví dụ mẫu)
  2. (templates django admin)
  3. địa phương ứng dụng mẫu dirs

Vì vậy, giải pháp đối với tôi là di chuyển mẫu đăng ký của tôi ghi đè từ thư mục localstore/templates của tôi vào thư mục/templates của dự án.

19

Bạn phải sử dụng:

templates/registration/password_change_form.html 

Nếu bạn vẫn thấy của Django quản lý mẫu, bạn phải thay đổi thứ tự của bạn INSTALLED_APPS (ví dụ nếu mẫu của bạn là bên trong một số ứng dụng, ứng dụng này phải xuất hiện trước django.contrib.admin trong INSTALLED_APPS)

https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.password_change

+3

không biết tại sao bạn bị downvoted, đây là câu trả lời tôi đang tìm kiếm. Đã giải quyết được vấn đề! – TheBronx

+7

Tipp ** ứng dụng này phải xuất hiện trước khi django.contrib.admin trong INSTALLED_APPS ** rất hữu ích! – Jarus

+2

Cũ mặc dù nhận xét này là, nó vẫn là một người tiết kiệm cuộc sống;) +1 để đề cập đến tầm quan trọng của trật tự – LisuBB

Các vấn đề liên quan