如何修改django-allauth的默认模板?

时间:2016-08-18 03:41:36

标签: django django-templates django-allauth

我正在使用Django 1.10,我想将登录,登录等的allauth应用程序添加到我的网站。我已经从pip安装了allauth,并尝试将allauth存储库中的模板放入我的模板文件夹中并调用它们,但我不知道如何使其工作。

8 个答案:

答案 0 :(得分:16)

正确的答案可以在这里找到:https://stackoverflow.com/a/31282443/4992248

  1. 创建yourproject/templates/allauth/account/并在此处粘贴您需要编辑的所有模板/myproject/Lib/site-packages/allauth/templates/account
  2. 如果您需要对socialaccount模板进行更改,请同时创建yourproject/templates/allauth/socialaccount/

    1. 'DIRS'中修改settings.py,如'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
    2. 最后它应该看起来像这样:

      TEMPLATES = [
          {
              'BACKEND': 'django.template.backends.django.DjangoTemplates',
              'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
              'APP_DIRS': True,
              'OPTIONS': {
                  'debug': False,
                  'context_processors': [
                      'django.template.context_processors.debug',
                      'django.template.context_processors.request',
                      'django.template.context_processors.media',
                      'django.contrib.auth.context_processors.auth',
                      'django.contrib.messages.context_processors.messages',
                  ],
              },
          },
      ]
      
      1. 您永远不应该在/Lib/site-packages/*进行任何代码更改,因为更新软件包后所有更改都会丢失。

答案 1 :(得分:6)

模块的文档似乎已过时。对于Django 1.10,您应该执行以下操作:

  • 使用pip下载模块
  • 将以下内容添加到INSTALLED_APPS(/settings.py文件)
  

'django.contrib.sites', # first place
'allauth',  # after your modules declarations
'allauth.account',
'allauth.socialaccount',
  • 添加后端声明和allauth
  • 所需的其他内容
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
  • 似乎不需要django 1.10来修改TEMPLATES部分(django-allauth == 0.28.0)。您可以使用“pip freeze”命令验证模块版本。

  • 创建一个人工模块来覆盖模板;例如,我的项目名为irj_app,我添加了一个名为_shared的新应用程序,然后我有以下结构,并在'allauth'声明之前将其添加到INSTALLED_APPS:

  

irj_app / _shared

  • 我在“_shared”文件夹中创建了一个模板目录,我添加了一个名为“base.html”的文件,该文件覆盖了allauth模板。我发现django-allauth创建了一个覆盖你之前做过的布局的模板,然后你需要拦截django-allauth模板来改变这种行为。您也可以覆盖此身份验证机制的任何模板。例如,我有:
  

irj_app / _shared / templates / base.html

     

irj_app / _shared / templates / account / base.html

     

irj_app / _shared / templates / account / signup.html

     

irj_app / _shared / templates / _shared / adminlte-template / ... (template for other modules)

希望有所帮助

答案 2 :(得分:3)

试试这个:

在您应用的模板目录中创建帐户目录,使其如下所示

  

yourppname /模板/帐户

和文件

  

yourppname /模板/帐户/ l​​ogin.html的

     

yourppname /模板/帐户/ signup.html

并在下面添加到您的模板DIRS 请记住将yourappname更改为您应用的名称

  

os.path.join(BASE_DIR,' yourappname',' templates')

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'yourappname', 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]

答案 3 :(得分:1)

这对我使用Django 2.1.7和django-allauth 0.39.1有用:

  • 在文件夹yourapp/templates/中创建一个名为account的文件夹,因此结构的最后是yourapp/templates/account/并添加要覆盖的所有模板,例如login.html或{{ 1}}。
  • signup.html中,我的模板目录保持不变

    settings.py

答案 4 :(得分:1)

我将django 3.0.4与django-allauth 0.41.0一起使用

在项目目录中添加文件夹templates。 在文件夹templates内,添加另一个带有app_name的文件夹,对于模板login.html,您将创建一个文件夹accounts

因此完整路径为

 /project_name/templates/accounts/login.html

我在settings.py中的TEMPLATE Dirs保持不变

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

django-allauth doc templates

答案 5 :(得分:0)

Allauth模板可以像普通模板覆盖方法一样被覆盖。

  1. 设置模板目录
  2. TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), os.path.join(BASE_DIR,'templates'))

    1. 您的模板目录将位于项目目录中。进入模板目录并create a directory named allauth, inside allauth create a template directory and inside that create a directory accounts

    2. 创建与allauth模板同名的html文件。有关模板名称的更多信息,请参阅allauth github repository

答案 6 :(得分:0)

  

在django-allauth == 0.36.0

  • 假设您要自定义登录页面。
  • 不需要更改模板设置
  • 只需在项目模板文件夹中创建一个名为account的文件夹,然后:
  • 克隆项目 git clone https://github.com/pennersr/django-allauth cd django-allauth/allauth/templates/account
  • 将base.html和login.html复制到创建的帐户文件夹
  • 我尝试过,它可以工作。

Official Link

答案 7 :(得分:-2)

嗯,我刚才能做到。

我不知道这些模板的位置,但我发现,在我的情况下(我使用虚拟环境):

Envs/myproject/Lib/site-packages/allauth/templates

我修改了base.html并将我的静态文件夹和我的所有引导程序和jquery添加到文件中的设置中:

app_settings.py

并添加了这个。

...
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

这就是全部。

我不知道这是否适合这样做,但如果有人有更好的答案,请发布。