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

use*_*632 10 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')
Run Code Online (Sandbox Code Playgroud)

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',
            {}
        )
Run Code Online (Sandbox Code Playgroud)

我认为这些完全相同.

有什么区别?

小智 9

两者都完全不同,重定向为您传递的参数提供了HttpResponseRedirect.

return redirect('https://example.com/')  
Run Code Online (Sandbox Code Playgroud)

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

 return render(request,'/result.html',{'foo':'bar'})
Run Code Online (Sandbox Code Playgroud)

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

result.html ... {foo} ...其中foo将替换为bar有关详细信息,请查看此django文档


eus*_*ass 7

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

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

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