我有一个观点:
def partnered_item_edit(request, item_id, return_to='delivery_manager'):
item = get_object_or_404(PartneredItem, pk=item_id)
...
delivery.save()
return redirect(return_to)
这样做的目的是使其可重复使用,以便我可以从程序中的不同位置使用此视图,并将其重定向到用户之前工作的视图。
在模板中我有:
<p><a href="{% url 'partnered_item_edit' item_id=item.id return_to='delivery_view' %}" class="btn btn-default ...
我当前想要重定向到的视图声明如下:
def delivery_view(request, delivery_id):
delivery = get_object_or_404(Delivery, pk=delivery_id)
...
但我也希望它在程序的其他部分重定向到这个,例如:
def delivery_manager(request):
date = datetime.date.today()
(这个不需要delivery_id
)
我也想将此视图挂钩到其他模板中,并将此技术用于其他重定向/视图组合。基本上我正在寻找允许我这样做的事情:
reverse('delivery_view', args=('delivery_id'))
或
reverse('delivery_manager')
在模板中。
然后......我想努力使这项工作变得艰难吗?我是否需要制作模板过滤器才能使其正常工作?
感谢您的帮助。
答案 0 :(得分:0)
我建议您更改partnered_item_edit
视图的位逻辑:
def partnered_item_edit(request, item_id, return_to_delivery=False):
item = get_object_or_404(PartneredItem, pk=item_id)
...
delivery.save()
if return_to_delivery:
return redirect('delivery_view', args=(delivery.pk,))
else:
return redirect('delivery_manager')
如果要编辑项目并重定向到交付管理器,请在模板中使用:
{% url 'partnered_item_edit' item_id=item.id %}
否则,如果您想重定向到交付使用:
{% url 'partnered_item_edit' item_id=item.id return_to_delivery=True %}
希望这些有帮助!