【发布时间】:2015-09-18 14:50:39
【问题描述】:
我有一个UpgradeView,可以像在 django 管理员中一样保存。我可以保存、保存并继续编辑或保存并创建一个新对象。
每个都通向不同的视图:
DetailView、UpdateView 和 CreateView。
保存后,我想在其导向的每个视图或模板上发出消息。 例如“成功保存”或“无法保存对象。”
编写自定义模板标签对我来说真的很难,因为创建标签后,我不知道如何、在何处以及何时将消息传递给其他视图。
这是我来自的UpdateView。
class TopicEditView(UpdateView):
fields = ['title','description',]
model = Topic
...
def get_success_url(self):
if self.request.POST.get('save'):
return reverse('topic_detail', kwargs={'pk':self.object.pk})
elif self.request.POST.get('save_and_continue'):
return reverse('topic_edit', kwargs={'pk':self.object.pk})
elif self.request.POST.get('save_and_create_new'):
return reverse('topic_create')
else:
return reverse('fallback_success_url')
我的自定义模板标签仍然是空的,因为我看到的唯一示例对我来说很难理解。
@register.inclusion_tag('msg.html', takes_context=True)
def get_msg(context):
return None
在'msg.html' 中,我只有字符串说“成功保存”,这并没有导致任何结果,我忘记了我为什么这样做。
这是在我的模板中(什么都没有):
{% load msg_handler %}
{% get_msg %}
我如何以及在哪里可以将消息传递到这些使用会话的视图?
【问题讨论】:
-
其实没有,我不知道为什么我从来没有看到过。谢谢,我试试看
-
太棒了,试试看。我会做出正式的回答;)
标签: django-templates django-views django-sessions django-1.8 templatetags