Django中的render()和redirect()有什么区别?

时间:2016-10-08 08:39:32

标签: django

之间有什么区别
def post(self, request, *args, **kwargs):
    if form.is_valid():
        order = form.save(commit=False)
        order.user = request.user
        order.save()
        return redirect('orders:success')

def post(self, request, *args, **kwargs):
    if form.is_valid():
        order = form.save(commit=False)
        order.user = request.user
        order.save()
        return render(
            request,
            'orders/success.html',
            {}
        )

我认为这些完全相同。

有什么不同吗?

2 个答案:

答案 0 :(得分:5)

两者在重定向给出HttpResponseRedirect的地方完全不同 你已经过去的论点。

示例

return redirect('https://example.com/')  

带您进入https://example.com/页面

 return render(request,'/result.html',{'foo':'bar'})

将上下文字典呈现到模板“result.html”并返回带有该呈现文本的HttpResponse对象

result.html ... {} FOO ... 其中foo将被bar取代 有关详细信息,请查看此django docs

答案 1 :(得分:4)

渲染函数Combines a given template with a given context dictionary and returns an HttpResponse object with that rendered text.

您请求一个页面,render函数返回它。

redirect函数向给定的URL发送另一个请求。