0

我已经启动并运行了消息;我可以得到一个简单的“提交成功”消息来工作,所以我知道context_processors中间件和中间件都配置正确。但是,我正在尝试使用表单中提交的数据动态更新成功消息。

这是我的views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from menu.models import Book
from .forms import AddBook
from nextbook.models import Book
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView


def library(request):
    form = AddBook(request.POST or None)
    success = False
    if request.method == 'POST':
        if form.is_valid():
            addedbook = form.save(commit=False)
            addedbook.save()
            form = AddBook()
            success = True
            messages.success(request, 'Book addition successful')


    return render(request, 'newbook/index.html', {'form': form})


class BookAddConf(SuccessMessageMixin, CreateView):
    model = Book
    success_message = "%(new_title)s by %(new_author)s was added to your library"

    def get_success_message(self, cleaned_data):
        return self.success_message % dict(
            cleaned_data,
            new_title=self.object.title,
            new_author=self.object.author
        )

我试图success_message在用户提交表单时显示,用他们输入的数据填充消息。我已经阅读了十几个关于 SO 的答案,但似乎找不到正确的信息来连接最后一个点。

这是我的模板:

{% if messages %}
  <ul class="messages">
      {% for message in messages %}
      <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
      {% endfor %}
  </ul>
  {% endif %}

我知道我错过了一些东西,但我不确定是什么。

4

0 回答 0