【问题标题】:How can I set success_mesasge with format() in django generic view?如何在 django 通用视图中使用 format() 设置 success_mesasge?
【发布时间】:2016-08-22 07:45:27
【问题描述】:

我想要实现的是这样的:

from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView

from posts.models import Post


class PostNewView(LoginRequiredMixin, SuccessMessageMixin, CreateView):

    model = Post
    fields = ['title', 'content', 'image']
    success_message = "{} has been created successfully".format(self.post.title) 

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

但它发生错误。有什么想法吗?

【问题讨论】:

    标签: django django-messages


    【解决方案1】:

    这不是format() 的问题,而是尝试引用当时不存在的属性。类级别的属性在导入时进行评估,但self.title 只存在于运行时,并且只存在于方法中。

    您应该使用get_success_message 方法,而不是在该级别设置消息:

    def get_success_message(self, cleaned_data):
        return "{} has been created successfully".format(cleaned_data['title'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2014-11-21
      • 2014-03-06
      • 2013-03-07
      • 2020-06-18
      • 1970-01-01
      • 2019-09-07
      相关资源
      最近更新 更多