2013-05-13 88 views
6

我一直試圖讓django-allauth工作幾天,現在我終於知道發生了什麼事情。Django-allauth加載錯誤的base.html模板

代替加載使用django-allauth安裝的base.html模板,該應用程序會加載我用於我網站其餘部分的base.html文件。

如何告訴django-allauth使用virtualenv/lib/python2.7/sitepackages/django-allauth目錄中的base.html模板而不是我的project/template目錄?

回答

6

除非直接調用,否則您的base.html是您定義的模板的擴展。

例如,如果您渲染一個名爲Page.html的模板 - 頂部您將有{% extends "base.html" %}

如上所述,base.html位於您在settings.pyTEMPLATE_DIRS =()下定義的路徑中,根據您的描述,該路徑定義爲project/template

最好的辦法是到Django的allauth base.html文件複製到定義TEMPLATE_DIRS位置,其重命名爲allauthbase.html,然後擴展你的模板包括不是通過{% extends "allauthbase.html" %}默認基礎吧。

或者,您可以將子文件夾添加到您的模板位置,如project/template/allauth,將allauth放在那裏,然後使用{% extends "allauth/base.html" %}

2

兩年後,這仍然是一個問題,接受的答案是缺少一些新的信息。

github我發現所有allauth模板都來自account/base.html,它來自base.html。我的解決辦法是:

  • virtualenv/lib/python2.7/sitepackages/django-allauth/templates,複製base.html的全部內容替換account/base.html一切(即更換{% extends 'base.html' %}語句)
  • 刪除allauth是base.html。它現在是多餘的。

完成!

+1

直到您在另一臺計算機上安裝項目... – Mark 2015-06-12 13:38:45

+0

正確。我當時不明白這些事情 – ZG101 2015-06-15 00:42:39

0

django-allauth模板似乎延伸account/base.htmlexample),其延伸base.html

所以複製base.html到例如myapp/templates/account/base.html,並確保django-allauth之前myapp負載(通過將其更高INSTALLED_APPS)。

現在,django驗證模板將擴展您的account/base.html,這將是django-allauthbase.html

這並不完美,因爲django-allauthbase.html可能會更新,你會錯過這些更新。但它似乎比重命名您的所有進口或更改django-allauth代碼更好。

請注意,您也可以在您的base.html的內容周圍放置{% block content %},然後django-allauth將使用該樣式,這在許多情況下似乎是件好事。

0

Allauth試圖延伸myproject/templates/base.html。最簡單的方法是移動base.htmlmyproject/templates/site/以獲得myproject/templates/site/base.html或者乾脆重命名base.html