0

我具有以下功能,可对 ListView 中的选定行进行批量操作。我正在显示成功和错误的消息。

def archive_stores(view, queryset):
    if queryset.exists():
        queryset.update(archive=True)
        success_message = messages.success(view.request, 'Archived successfully.')
        return HttpResponseRedirect(reverse('stores_list', success_message))
    else: #The message is not shown when queryset of empty.
        error_message = messages.error(view.request, 'No success!.')
        return HttpResponseRedirect(reverse_lazy('stores_list', error_message))

成功消息正在正确显示。但错误消息永远不会出现。请指导我可能是什么原因?

以下是列表视图:

@method_decorator(login_required, name='dispatch')
class StoresListView(ActionViewMixin,ListFilteredMixin,ListView):
    template_name = 'stores_listing.html'
    model = Store
    filter_set = StoreFilter
    actions = [archive_stores, unarchive_stores, delete_stores, export_stores,]
    paginate_by = 25

以下是消息模板:

{% for message in messages %}
  <div class="alert {{ message.tags }} alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
    {{ message | safe }}
  </div>
{% endfor %}

谢谢。

4

1 回答 1

0

尝试这个:

   def archive_stores(view, queryset):
      if queryset:
        queryset.update(archive=True)
        success_message = messages.success(view.request, 'Archived successfully.')
        return  HttpResponseRedirect(reverse('stores_list', success_message))
      else: #The message is not shown when queryset of empty.
         error_message = messages.error(view.request, 'No success!.')
         return HttpResponseRedirect(reverse_lazy('stores_list', error_message))

而且我认为您不必明确地将消息作为 kwarg 反向传递,因为单独调用 message.success() 或 message.error() 将包含所需的消息。您可以像这样更新您的视图:

   def archive_stores(view, queryset):
      if queryset:
        queryset.update(archive=True)
        messages.success(view.request, 'Archived successfully.')
        return  HttpResponseRedirect(reverse('stores_list'))
      else: #The message is not shown when queryset of empty.
         messages.error(view.request, 'No success!.')
         return HttpResponseRedirect(reverse_lazy('stores_list'))
于 2017-10-08T04:54:58.550 回答