[英]Django: How to redirect with arguments
提交表單后,我想重定向到一個特定的視圖,傳遞一個 flag=True 以激活一個彈出窗口,如:
def view1(request):
if request.method == 'POST':
form = Form(request.POST)
if form.is_valid():
form.save()
return redirect('new_view') # Here I need to send flag=True
else:
form = Form()
return render(request, 'template.html', {'form': form})
我該怎么做?
如果它應該在查詢字符串或視圖的參數中,那么你所說的參數是什么意思還不是很清楚。
無論哪種方式,以下都是兩種解決方案;
重定向接受 args 和 kwargs
redirect('new_view', flag='show') # This is the argument of a view
或
redirect('{}?flag=True'.format(reverse('new_view'))
然后你可以像這樣在視圖中訪問它
show_flag = bool(request.GET.get('flag', False))
對於給定的 url 模式,例如
url(r'^random/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.random, name="urlname")
或
url(r'^argfree/', views.random2, name="urlname2
from django.http import HttpResponseRedirect
from django.urls import reverse
def view(request):
# do your thing
if something:
return HttpResponseRedirect(reverse("urlname", args=["this_is_arg1", "this_is_arg2"]))
else:
return HttpResponseRedirect(reverse("urlname"))
from django.urls import reverse
response = redirect(f"{reverse('search')}?query='How to redirect with arguments'")
在這種情況下,有一個django-url-params模塊可以幫助您。 只需添加
request.cparam = {'flag': True}
return param_redirect(request, viewname)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.