我目前有一个项目,人们可以创建职位。我想显示一条消息,说一个帖子已成功地被投票,但SuccessMessageMixin不起作用。我已经尝试了其他方法,这是包括在我的代码,我将张贴在下面。SuccessMessageMixin适用于其他视图。我不知道为什么它不适合这个视图。
重定向代码不起作用的视图
class PostUpvoteRedirect(SuccessMessageMixin, RedirectView):
model = Post
success_message = "Post was upvoted successfully"
def get_redirect_url(self, *args, **kwargs):
obj = get_object_or_404(
Post,
publish__year=self.kwargs['year'],
publish__month=self.kwargs['month'],
publish__day=self.kwargs['day'],
slug=self.kwargs['post'],
)
url_ = obj.get_absolute_url()
user = self.request.user
if (user != None):
if user in obj.Upvote.all():
obj.Upvote.remove(user)
else:
obj.Upvote.add(user)
if user in obj.Downvote.all():
obj.Downvote.remove(user)
success_message = "Post was upvoted successfully"
return url_
代码在哪里工作
class PostCreateView(SuccessMessageMixin, LoginRequiredMixin, CreateView):
model = Post
fields = ['title','body']
success_message = "Post was created successfully"
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
2条答案
按热度按时间axzmvihb1#
这里的关键是要认识到
SuccessMessageMixin挂钩到RedirectView上不存在的form_valid,以将其消息推送给用户。
这正是它在另一个方法中工作的原因,因为这些类支持
form_valid()
功能。您可以在这里看到关于如何使用
RedirectView
-Success_url in django RedirectView启用它的这个写得很好的答案j7dteeu82#
请登录Django Message Framework了解更多详情!