我正在使用Django 1.10,我想将登录,登录等的allauth应用程序添加到我的网站。我已经从pip安装了allauth,并尝试将allauth存储库中的模板放入我的模板文件夹中并调用它们,但我不知道如何使其工作。
答案 0 :(得分:16)
正确的答案可以在这里找到:https://stackoverflow.com/a/31282443/4992248
yourproject/templates/allauth/account/
并在此处粘贴您需要编辑的所有模板/myproject/Lib/site-packages/allauth/templates/account
。如果您需要对socialaccount
模板进行更改,请同时创建yourproject/templates/allauth/socialaccount/
'DIRS'
中修改settings.py
,如'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
最后它应该看起来像这样:
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',
],
},
},
]
/Lib/site-packages/*
进行任何代码更改,因为更新软件包后所有更改都会丢失。答案 1 :(得分:6)
模块的文档似乎已过时。对于Django 1.10,您应该执行以下操作:
'django.contrib.sites', # first place
'allauth', # after your modules declarations
'allauth.account',
'allauth.socialaccount',
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
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 /模板/帐户/ login.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')]
答案 5 :(得分:0)
Allauth模板可以像普通模板覆盖方法一样被覆盖。
TEMPLATE_DIRS = (
os.path.join(BASE_DIR,'templates'), os.path.join(BASE_DIR,'templates'))
您的模板目录将位于项目目录中。进入模板目录并create a directory named allauth, inside allauth create a template directory and inside that create a directory accounts
创建与allauth模板同名的html文件。有关模板名称的更多信息,请参阅allauth github repository。
答案 6 :(得分:0)
在django-allauth == 0.36.0
git clone https://github.com/pennersr/django-allauth
cd django-allauth/allauth/templates/account
答案 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"),
]
这就是全部。
我不知道这是否适合这样做,但如果有人有更好的答案,请发布。