如何自定义Wagtail页面提交审核时发送的邮件内容?
如何覆盖Wagtail页面审核通知的邮件模板并添加自定义字段
Wagtail的审核通知邮件模板支持通过模板覆盖机制自定义,无需修改源码,步骤如下:
1. 定位目标模板路径
Wagtail默认的审核通知模板存放在wagtail/admin/templates/wagtailadmin/notifications/目录下,对应不同操作类型的模板文件:
- 提交审核:
submitted.html(HTML版)、submitted.txt(纯文本版) - 审核通过:
approved.html、approved.txt - 审核驳回:
rejected.html、rejected.txt
2. 在项目中创建对应模板文件
在你的Django项目根目录的templates文件夹下,复制相同的路径结构:templates/wagtailadmin/notifications/,然后将需要修改的模板文件(或新建同名文件)放入该目录。
比如要修改提交审核的邮件,就创建templates/wagtailadmin/notifications/submitted.html和submitted.txt。
3. 自定义邮件内容并添加字段
默认模板的上下文已经包含以下变量,可直接使用:
page:当前操作的页面对象(可调用页面的任意字段,比如page.title、自定义字段page.my_custom_field)user:执行操作的用户对象(如user.get_full_name)action_url:页面的审核操作链接comment:审核操作时填写的评论内容(如果有)
举个修改提交审核邮件的例子:
HTML模板(submitted.html)
{% extends "wagtailadmin/notifications/base.html" %} {% block content %} <p>页面「{{ page.title }}」已由 {{ user.get_full_name }} 提交审核。</p> {% if comment %} <p><strong>附审核评论:</strong>{{ comment }}</p> {% endif %} <p>点击链接处理审核:<a href="{{ action_url }}">{{ action_url }}</a></p> {% endblock %}
纯文本模板(submitted.txt)
页面「{{ page.title }}」已由 {{ user.get_full_name }} 提交审核。 {% if comment %} 附审核评论:{{ comment }} {% endif %} 点击链接处理审核:{{ action_url }}
4. 扩展更多自定义字段(可选)
如果需要添加默认上下文没有的变量,可以通过重写页面模型的send_notification方法来扩展上下文:
from wagtail.models import Page from wagtail.admin.notifications import send_notification class CustomPage(Page): # 你的自定义字段定义 def send_notification(self, notification_type, user, comment=None, **kwargs): # 扩展上下文 extra_context = { 'custom_data': '你的自定义内容', 'another_field': self.my_custom_field, } # 调用原方法并传入扩展后的上下文 send_notification( notification_type, self, user, comment=comment, extra_context=extra_context, **kwargs )
之后在模板里就可以直接使用{{ custom_data }}这类自定义变量了。
完成以上步骤后,测试页面审核流程,就能收到自定义内容的通知邮件了。
内容的提问来源于stack exchange,提问作者Daniel Erazo
相关产品推荐
相关产品推荐

