Djoser 使用模板覆盖激活电子邮件
Djoser override activation email with template
我一直在搜索有关如何执行此操作的更多信息,但似乎几乎没有文档帮助。
基本上我想做的是为激活电子邮件制作一个新模板,这样 link 就可以以 localhost:3000 而不是 localhost:8000 开头(我正在使用 Vue前端 post 请求,这就是原因)
我设法找到了这个:https://github.com/sunscrapers/djoser/blob/master/djoser/templates/email/activation.html
但是当我将它添加到我自己的项目中时,默认的 Djoser 模板仍在使用。
这是我的 settings.py 的样子:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]
我的激活 URL 如果手动将 8000 替换为 3000 则有效:
'ACTIVATION_URL': 'registration/activate/{uid}/{token}',
templates/email/activation.html:
{% block subject %}
{% blocktrans %}Account activation on {{ site_name }}{% endblocktrans %}
{% endblock subject %}
{% block text_body %}
{% blocktrans %}You're receiving this email becaus!!!!!!e you need to finish activation process on {{ site_name }}.{% endblocktrans %}
{% trans "Please go to the following page to activate account:" %}
{{ http }}://{{ localhost:3000 }}/{{ {% url 'registration/activate' uidb64=uid token=token %} }}
{% trans "Thanks for using our site!" %}
我想你需要覆盖 email.ActivationEmail
,例如 core/email.py
from djoser import email
class ActivationEmail(email.ActivationEmail):
template_name = 'email/activation.html'
并将其添加到您的 settings.py
DJOSER = {
'EMAIL': {
'activation': 'core.email.ActivationEmail'
}
}
这是可以覆盖的电子邮件link
有效!我刚刚更改了 activation.html
文件
~/.local/lib/python3.5/site-packages/djoser/templates/email
没有任何其他变化
在不更改 Djoser 电子邮件 类 和 settings.py 的情况下,您可以使用概念 here
覆盖项目模板目录中的 html 模板
您只需要在 'templates' 文件夹中创建一个名为 email 的新文件夹,并在其中创建 html 个文件您想要 customize/override.
的电子邮件模板
例如,如果您想自定义密码重设电子邮件,您的自定义文件路径应类似于:
projectName/templates/email/password_reset.html
Here 是您可以自定义的所有 Djoser 电子邮件模板的完整列表
您可以在 settings.py 文件中配置 DOMAIN
和 SITE_NAME
而不是更改模板。
只需输入 DOMAIN = ('localhost:3000') 和 SITE_NAME = ('YOUR_SITE_NAME')
DOMAIN = ('localhost:3000')
SITE_NAME = ('YOUR_SITE_NAME')
DJOSER = {
...
}
来源:(我发现我们不需要使用此答案中提到的“config”)
我找到了这个关闭的线程,它确实完成了允许我呈现自定义模板的工作。可能要检查 this
Pavlo Naumenko 的回答对我也有用,非常感谢。但请注意:我必须更改文件的名称(我不能在我自己的模板上使用“activation.html”)。如果我使用它,django 会继续发送默认模板。不知道为什么。
万一有人也发生这种情况。我正在使用 django 3.2.3 和 djoser 2.1.0
我一直在搜索有关如何执行此操作的更多信息,但似乎几乎没有文档帮助。
基本上我想做的是为激活电子邮件制作一个新模板,这样 link 就可以以 localhost:3000 而不是 localhost:8000 开头(我正在使用 Vue前端 post 请求,这就是原因)
我设法找到了这个:https://github.com/sunscrapers/djoser/blob/master/djoser/templates/email/activation.html 但是当我将它添加到我自己的项目中时,默认的 Djoser 模板仍在使用。
这是我的 settings.py 的样子:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]
我的激活 URL 如果手动将 8000 替换为 3000 则有效:
'ACTIVATION_URL': 'registration/activate/{uid}/{token}',
templates/email/activation.html:
{% block subject %}
{% blocktrans %}Account activation on {{ site_name }}{% endblocktrans %}
{% endblock subject %}
{% block text_body %}
{% blocktrans %}You're receiving this email becaus!!!!!!e you need to finish activation process on {{ site_name }}.{% endblocktrans %}
{% trans "Please go to the following page to activate account:" %}
{{ http }}://{{ localhost:3000 }}/{{ {% url 'registration/activate' uidb64=uid token=token %} }}
{% trans "Thanks for using our site!" %}
我想你需要覆盖 email.ActivationEmail
,例如 core/email.py
from djoser import email
class ActivationEmail(email.ActivationEmail):
template_name = 'email/activation.html'
并将其添加到您的 settings.py
DJOSER = {
'EMAIL': {
'activation': 'core.email.ActivationEmail'
}
}
这是可以覆盖的电子邮件link
有效!我刚刚更改了 activation.html
文件
~/.local/lib/python3.5/site-packages/djoser/templates/email
没有任何其他变化
在不更改 Djoser 电子邮件 类 和 settings.py 的情况下,您可以使用概念 here
覆盖项目模板目录中的 html 模板您只需要在 'templates' 文件夹中创建一个名为 email 的新文件夹,并在其中创建 html 个文件您想要 customize/override.
的电子邮件模板例如,如果您想自定义密码重设电子邮件,您的自定义文件路径应类似于:
projectName/templates/email/password_reset.html
Here 是您可以自定义的所有 Djoser 电子邮件模板的完整列表
您可以在 settings.py 文件中配置 DOMAIN
和 SITE_NAME
而不是更改模板。
只需输入 DOMAIN = ('localhost:3000') 和 SITE_NAME = ('YOUR_SITE_NAME')
DOMAIN = ('localhost:3000')
SITE_NAME = ('YOUR_SITE_NAME')
DJOSER = {
...
}
来源:
我找到了这个关闭的线程,它确实完成了允许我呈现自定义模板的工作。可能要检查 this
Pavlo Naumenko 的回答对我也有用,非常感谢。但请注意:我必须更改文件的名称(我不能在我自己的模板上使用“activation.html”)。如果我使用它,django 会继续发送默认模板。不知道为什么。 万一有人也发生这种情况。我正在使用 django 3.2.3 和 djoser 2.1.0