我一直在寻找有关如何执行此操作的更多信息,但似乎几乎没有文档帮助。
本质上我想做的是为激活电子邮件创建一个新模板,以便链接可以以localhost:3000而不是localhost:8000开头(我将Vue用于前端发布请求,这就是为什么)
我设法找到了这个: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!" %}
答案 0 :(得分:2)
您可以在 settings.py 文件中配置 DOMAIN
和 SITE_NAME
,而无需更改模板。
只需输入 DOMAIN = ('localhost:3000') 和 SITE_NAME = ('YOUR_SITE_NAME')
DOMAIN = ('localhost:3000')
SITE_NAME = ('YOUR_SITE_NAME')
DJOSER = {
...
}
来源:https://stackoverflow.com/a/62586798/6568539(我发现我们不需要使用本答案中提到的“config”)
答案 1 :(得分:1)
我想您需要覆盖email.ActivationEmail
,例如覆盖core/email.py
from djoser import email
class ActivationEmail(email.ActivationEmail):
template_name = 'email/activation.html'
并将其添加到您的设置中。py
DJOSER = {
'EMAIL': {
'activation': 'core.email.ActivationEmail'
}
}
以下是可以覆盖link的电子邮件
答案 2 :(得分:0)
在不更改Djoser电子邮件类和settings.py的情况下,您可以使用概念here
覆盖项目模板目录中的html模板。您只需要在'templates'文件夹中创建一个名为 email 的新文件夹,并在其中创建具有您要自定义/覆盖的电子邮件模板确切名称的html文件。
例如,如果您要自定义密码重置电子邮件,则自定义文件路径应类似于:
projectName/templates/email/password_reset.html
Here是您可以自定义的所有Djoser电子邮件模板的完整列表
答案 3 :(得分:0)
我发现了这个封闭的线程,它确实完成了让我渲染自定义模板的工作。可能要检查 this
答案 4 :(得分:0)
Pavlo Naumenko 的回答对我也有用,非常感谢。但只是一个小提示:我必须更改文件的名称(我不能在自己的模板上使用“activation.html”)。如果我使用它,django 会继续发送默认模板。不知道为什么。 万一有人也发生这种情况。我在 djoser 2.1.0 中使用 django 3.2.3
答案 5 :(得分:-1)
正在工作!我刚刚更改了activation.html
文件
~/.local/lib/python3.5/site-packages/djoser/templates/email
没有任何其他变化