在Django-allauth中覆盖模板

4

我已经阅读了StackOverflow上所有可能的解决方案,并仔细研究了allauth文档。但仍然无法将我的本地模板(即我的Django项目中的模板)指向allauth模板(例如登录、注册等)。

1. 将我的应用程序在settings.py的INSTALLED_APPS中移动到allauth之前,使其看起来像这样:

'users', #my custom user model app
'date_track.apps.DateTrackConfig', # main app

'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.twitter',

2. 修改了我的项目结构,并将所有 allauth 模板(登录、注册等)移动到此位置。

  • 现在的结构如下:

my_project/templates/allauth/ 在该目录中,我有 3 个 allauth 目录: 1. account 2. openid 3. socialaccount

这些目录中包含了所有 allauth 模板以及 base.html。

3. 我已经修改了 settings.py 中的 TEMPLATES 设置,使其如下所示:

'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 
'templates', 'allauth','accounts', 'socialaccount')],

然而,每当我从我的主页访问链接(该主页继承自我的项目的base.html),它就会直接跳转到site-packages/allauth/templates/account目录中的模板。

base.html中的链接如下:

{% if user.is_authenticated %}
   <li class="nav-item">
     <p><h6>You are Logged in as <I>{{user.username}}</I></h6></p>
  </li>
  <li class="nav-item">
     <a class="nav-link active" href="{% url 'account_email' 
     %}">Email</a>
  </li>
  <li class="nav-item">
     <a class="nav-link" href="{% url 'account_logout' %}">Sign 
     out</a>
  </li>
{% else %}
  <li class="nav-item">
    <a class="nav-link" href="{% url 'account_login' %}">Sign in</a>
 </li>
 <li class="nav-item">
   <a class="nav-link " href="{% url 'account_signup' %}" 
    tabindex="-1">Sign up</a>
 </li>
{% endif %}

我一定做了什么傻事,但是我似乎找不到它。谢谢你的帮助!


1
请使用 https://github.com/danihodovic/django-allauth-ui。 - danihodovic
1个回答

10

请确保您的模板目录结构与以下结构相匹配:

# correct
templates\account
templates\openid
templates\socialaccount

看起来你有太多的目录:

# incorrect
templates\allauth\account
templates\alluth\openid
templates\alluth\socialaccount

请参考allauth源代码[1]

[1] https://github.com/pennersr/django-allauth/tree/master/allauth/templates


1
这只在项目文件夹中有效,对吗?而不是在应用程序文件夹中。有没有办法使用应用程序文件夹而不是主项目文件夹来使其工作? - Alfonso_MA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接