2013-05-13 4 views
6

Tôi đã cố gắng để có được django-allauth làm việc cho một vài ngày nay và cuối cùng tôi đã tìm ra những gì đang xảy ra.Django-allauth tải sai base.html template

Thay vì tải mẫu base.html cài đặt bằng django-allauth, ứng dụng tải tệp base.html mà tôi sử dụng cho phần còn lại của trang web của mình.

Làm cách nào để tôi yêu cầu django-allauth sử dụng mẫu base.html trong thư mục virtualenv/lib/python2.7/sitepackages/django-allauth thay vì thư mục project/template của tôi?

Trả lời

6

Trừ khi được gọi trực tiếp, base.html là phần mở rộng của các mẫu mà bạn xác định. Ví dụ: nếu bạn hiển thị mẫu có tên là Page.html - ở trên cùng, bạn sẽ có {% extends "base.html" %}.

Khi được định nghĩa ở trên, base.html nằm trong đường dẫn bạn đã xác định trong settings.py dưới TEMPLATE_DIRS =() - trong đó, từ mô tả của bạn, được định nghĩa là project/template.

Tốt nhất là để sao chép các tập tin django-allauth base.html đến định nghĩa TEMPLATE_DIRS vị trí, đổi tên nó để allauthbase.html, sau đó mở rộng các mẫu của bạn để bao gồm nó thay vì cơ sở mặc định của bạn thông qua {% extends "allauthbase.html" %}.

Hoặc bạn có thể thêm thư mục con vào vị trí mẫu của mình như project/template/allauth, đặt allauth base.html tại đó và sau đó sử dụng {% extends "allauth/base.html" %}.

2

Hai năm sau, điều này tiếp tục là vấn đề và câu trả lời được chấp nhận thiếu một số thông tin mới.

Trên github Tôi phát hiện ra rằng tất cả các mẫu allauth lấy từ tài khoản/base.html, bắt nguồn từ base.html. Giải pháp của tôi là:

  • Trong virtualenv/lib/python2.7/sitepackages/django-allauth/templates, sao chép toàn bộ nội dung của base.html để thay thế tất cả mọi thứ trong account/base.html (ví dụ: thay thế báo cáo kết quả {% extends 'base.html' %})
  • Xóa allauth là base.html. Nó bây giờ là dư thừa.

Xong!

+1

Cho đến khi bạn cài đặt dự án của bạn trên máy tính khác ... – Mark

+0

True. Tôi không hiểu những điều như vậy vào thời điểm đó – ZG101

0

django-allauth mẫu có vẻ mở rộng account/base.html (example), mở rộng base.html.

Vậy sao chép base.html để ví dụ myapp/templates/account/base.html, và chắc chắn rằng myapp tải trọng trước khi django-allauth (bằng cách đặt nó cao hơn trong INSTALLED_APPS).

Bây giờ, các mẫu auth django sẽ mở rộng account/base.html của bạn, sẽ là 's base.html.

Không hoàn hảo vì django-allauth 's base.html có thể cập nhật và bạn sẽ bỏ lỡ những cập nhật đó. Nhưng có vẻ tốt hơn là đổi tên tất cả các hàng nhập của bạn hoặc thay đổi mã django-allauth.

Lưu ý rằng bạn cũng có thể chỉ cần đặt {% block content %} trong nội dung base.html xung quanh nội dung và sau đó django-allauth sẽ sử dụng kiểu đó, có vẻ như là một điều tốt trong nhiều trường hợp.

0

Allauth cố gắng mở rộng myproject/templates/base.html. Những cách đơn giản nhất là để di chuyển base.html-myproject/templates/site/ để có được myproject/templates/site/base.html hoặc đơn giản là đổi tên base.html