Mag*_*gda 19 django django-class-based-views
我有一个DeleteView:
class LectureDelete(SuccessMessageMixin, DeleteView):
model = Lecture
success_message = "Die Veranstaltung wurde gelöscht"
success_url = '/'
def get_object(self):
qs = super(LectureDelete, self).get_object()
if self.request.user.has_perm('edit_lecture', qs):
return qs
else:
raise exceptions.PermissionDenied
Run Code Online (Sandbox Code Playgroud)
在我的success_url链接的模板中,我有以下代码,它可以与其他消息一起使用:
{% if messages %}
{% for message in messages %}
<p class="alert alert-dismissable {% if message.tags %}alert-{{ message.tags }}"{% endif %}>
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{{ message }}
</p>
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是没有显示该消息.我错过了什么吗?我在做什么?谢谢!
Hey*_*yl1 39
我认为Django问题跟踪器中的这个问题应该回答你的问题.
SuccessMessageMixinform_valid不存在的钩子DeleteView将其消息推送给用户.
它还提供了另一种适合我的方式:
from django.views.generic.edit import DeleteView
from django.core.urlresolvers import reverse_lazy
from django.contrib import messages
from .models import Thing
class ThingDelete(DeleteView):
model = Thing
success_url = reverse_lazy('list')
success_message = "Thing was deleted successfully."
def delete(self, request, *args, **kwargs):
messages.success(self.request, self.success_message)
return super(ThingDelete, self).delete(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
SuccessMessageMixin没有在删除视图中使用(但我将它用于创建和更新视图).希望这将在Django的更高版本中得到改进(有关详细信息,请参阅问题).
Jos*_*ino 10
Hel1的答案大多是正确的,但不提供在成功消息中显示字段的解决方案,如下所示:
success_message = "Session %(name)s was removed successfully"
Run Code Online (Sandbox Code Playgroud)
只需获取要删除的对象并使用对象的字典格式化字符串,如下所示:
class SessionDeleteView(SuccessMessageMixin, DeleteView):
model = Session
success_url = reverse_lazy('session_home')
success_message = "Session %(name)s was removed successfully"
def delete(self, request, *args, **kwargs):
obj = self.get_object()
messages.success(self.request, self.success_message % obj.__dict__)
return super(SessionDeleteView, self).delete(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
小智 5
from django.contrib import messages
class LectureDelete( DeleteView):
model = Lecture
def get_success_url(self):
messages.success(self.request, "deleted successfully")
return reverse("/")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5318 次 |
| 最近记录: |