如何通过Django中的“ get_success_message”函数传递字典?

时间:2019-02-08 20:53:11

标签: python django

我正在尝试通过“ 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}}。但这是错误的。 预先谢谢你!

1 个答案:

答案 0 :(得分:2)

您不能使用SuccessMessageMixinget_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')

这是How can I add additional data to Django messages?

的副本