我正在尝试通过“ get_success_message”功能传递字典,但我做不到。 我的消息中需要的不仅仅是字符串(标题,颜色...) 我在做什么错了?
我的观点:
class PeliculasEdit(SuccessMessageMixin, UpdateView):
model = Pelicula
form_class = PeliculaForm
template_name = "videoclub/peliculas_edit.html"
success_url = reverse_lazy('peliculas_manage')
message_data = {
'color':'success',
'titulo':'Película editada',
'mensaje':'La película se ha editado correctamente',
}
def get_success_message(self, cleaned_data):
return self.message_data
我正在使用消息的模板:
{% if messages %}
{% for message in messages %}
<div class="toast show" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
</div>
<div class="toast-body">
<p>{{message.color}}</p>
</div>
</div>
{% endfor %}
{% endif %}
例如,我以为我必须{{message.color}}。但这是错误的。 预先谢谢你!
答案 0 :(得分:2)
您不能使用SuccessMessageMixin
和get_success_message
方法以这种方式传递字典。
Django docs关于get_success_message
函数的说法:
从表单中清除的数据可用于字符串插值 使用%(field_name)的语法。对于ModelForms,如果需要访问 保存的对象中的字段将覆盖get_success_message() 方法。
get_success_message
函数的返回值是message
属性,该属性是发送到消息框架的字符串。 SuccessMessageMixin
是创建成功消息的快捷方式,例如:
messages.add_message(request, messages.SUCCESS, 'Profile details updated.')
听起来您正在寻找如何添加extra tags to a message:
messages.add_message(request, messages.SUCCESS, 'My success message string', extra_tags='color_success')
的副本