【发布时间】:2018-10-27 19:00:36
【问题描述】:
我有一个功能考虑到触发变量为真,用户被重定向到不同的页面:
def first_function(request):
if settings.TRIGGER:
with transaction.atomic():
if not order_lock.can_edit(request.user):
is_locked = not order_lock.can_edit(request.user)
from django.core.urlresolvers import reverse
return HttpResponseRedirect(reverse(some_function))
else:
is_locked = False
order_lock.lock_edit(request.user)
def some_function(request):
orders = Order.objects.all().order_by('status','created')
return render(
request,
'myapp/index.html',
{
'orders': orders,
},
)
问题是我尝试了将变量 is_locked 解析为 return HttpResponseRedirect(reverse(some_function)) 的各种排列方式
但无济于事,让我的some_function 适应:
def some_function(request, is_updated=None):
orders = Order.objects.all().order_by('status','created')
return render(
request,
'myapp/index.html',
{
'orders': orders,
'is_updated': is_updated,
},
)
有没有办法解决这个问题,以便可以在反向重定向时解析 is_updated 变量?目的是在 html 中触发(由于 is_updated)一个通知用户的弹出窗口。
编辑:
view.py
def edit_order(request, id = None, order_id = None)
with transaction.atomic():
order_lock = get_object_or_404(Order.objects.select_for_update(), id=id)
if not order_lock.can_edit(request.user):
is_locked = not order_lock.can_edit(request.user)
from django.shortcuts import redirect
from django.core.urlresolvers import reverse
return redirect(idx_order, kwargs={'is_locked': is_locked}) # Use this when url matter is resolved
def idx_order(request, is_locked=None):
orders = Order.objects.all().order_by('status','deadline','created','lastUpdate').exclude(status=2)
return render(
request,
'myapp/index_pimped.html',
{
'is_locked': is_locked
},
)
urls.py
url(r'^$', idx_order, name='idx_order'), # This works fine....
#url(r'^(?P<is_locked>[-\w]+)/$', idx_order, name='idx_order'), # ...but this doesn't
【问题讨论】:
标签: django-views httpresponse http-redirect django-1.11