簡體   English   中英

Django:如何使用參數重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM