django - 如何在成功消息混合中传递额外的标签
问题描述
我通过传递extra_tags在views.py中尝试了这个,但它对我不起作用。请建议为此提出另一种方法
视图.py
class CustomPasswordResetConfirmView(SuccessMessageMixin, PasswordResetConfirmView):
success_message = "Your password has been set. You may go ahead and log in now. "
extra_tags = 'alert-success'
def get_success_message(self, cleaned_data):
return (self.success_message, self.extra_tags)
登录.html
{% if messages %}
{% for message in messages %}
{% if message.extra_tags == 'alert-success' %}
<!-- alert-warning-green -->
<div class="alert-bx alert-warning-green mt-3">
<i class="icon-checked b-6 alert-icon mr-2"></i> {{message}}
</div>
<!-- alert-warning-green END -->
{% endif %}
{% if message.extra_tags == 'alert-danger' %}
<!-- error-alert -->
<div class="alert-bx error-alert mt-3">
<i class="icon-warning-triangle alert-icon mr-2"></i> {{message}}
</div>
<!-- error-alert END -->
{% endif %}
{% endfor %}
{% endif %}
解决方案
get_success_message
返回字符串消息,不支持extra_tags
.
为了支持它,您必须修改form_valid
.SuccessMessageMixin
默认函数定义为:
def form_valid(self, form):
response = super().form_valid(form)
success_message = self.get_success_message(form.cleaned_data)
if success_message:
messages.success(self.request, success_message)
return response
为了支持您extra_tags
,您必须更改为:
def form_valid(self, form):
response = super().form_valid(form)
success_message = self.get_success_message(form.cleaned_data)
if success_message:
messages.success(self.request, success_message, extra_tags=self.extra_tags)
return response
并删除您修改的get_success_message
推荐阅读
- python - Why does keras model predict slower after compile?
- amazon-s3 - 如何仅从 S3 下载和打开 bzip2 的第一个块?
- python-imaging-library - Open WebP images in GCE Deep Learning VM
- postgresql - 将 Google Cloud SQL Postgres 数据库连接到 Google Data Studio
- arrays - 给定一个数组,其中 arr[i] = i-1 使用以下方法,输出将是什么?
- c# - 如何在带有复选框的组合框中继续显示选定的文本?
- c# - JsonDocument 获取 JSON 字符串
- elasticsearch - Logstash UDP 问题
- c# - 如何在部分类中实现 OnPropertyChanged 事件
- git - SourceTree - 反向提交和推送