如何在django通用视图中使用format()设置success_message



我想实现的是这样的:

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)

但是出现错误。什么好主意吗?

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

与其将消息设置为该级别,不如使用get_success_message方法:

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

最新更新