我正在做一个django项目,对reverse、reverse_lazy和redirect非常困惑。
重定向函数是否可以使用参数重定向?或者,每当我想发布参数时,我应该将方法更改为反向吗?
是否可以用参数重定向函数?
是。想象一下,你有一个url模式:
path('foo/<str:bar>/<id:pk>/', name='some_path')
您可以使用重定向到该路径
return redirect('some_path', bar='value-for-bar', pk=1425)
对reverse、reverse_lazy和redirect非常困惑。
reverse
和reverse_lazy
确定给定视图名称的路径。该路径是字符串,而不是HTTP响应,您不能将此类字符串作为视图的结果返回。
redirect(…)
函数[Django-doc]将在内部调用reverse(…)
功能[Django-dc],并将结果封装在HttpResponseRedirect
[Django-Dc]或HttpResponsePermanentRedirect
Django-doc]中。
因此,它将两层相互结合:url层用于计算路径,视图层用于构建HTTP响应,这就是为什么它在django.shortcuts
模块[Django-doc]中定义的原因。