2013-05-13 90 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