2017-10-08 85 views
0

我有以下功能,用於批量操作ListView中的選定行。 我正在顯示成功和錯誤消息。Django:郵件不被顯示

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)) 

成功消息顯示正確。但錯誤消息從不出現。請指導我可以是什麼原因?

以下是ListView控件:

@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 %} 

感謝。

+0

您能否顯示視圖? –

+0

用視圖更新了問題。請注意我使用的是:django_actions包,用於在ListView中生成類似於管理的操作。 –

+0

Sry,我的意思是,模板* –

回答

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')) 
+0

我試過這個。我不知道爲什麼else部分中的消息從不執行。 –

+0

是否嘗試過打印查詢集以確保其空? –

+0

我已經嘗試使用print('我在別人')print(queryset)打印到控制檯。沒有什麼是打印。我想它會進入其他部分。 –