render()如何确定渲染模板

时间:2017-11-20 22:34:59

标签: django

  • 已经尝试过下面的查看功能。
  • 匹配并呈现正常。
  • 但是无法通过实验/搜索找出答案 如何确定在呈现模板时使用的URL。
  • 匹配/传入的网址是“rec / play / new /".
  • render()似乎在呈现时使用相同的url,例如“REC / PLAY /新/”
  • 总是这样吗?如何确定使用此URL。我想通过请求,但即使请求被消除,它也没有影响: return render(None,'play / edit.html',{'form':RecForm()}) - 仍然使用网址“rec / play / new /”进行渲染。它是如何做到的?

    def rec_new(request):
        #matching url is "rec/play/new/"
        if request.method == "POST":
        form = RecForm(request.POST)
        if form.is_valid():
           model = form.save(commit=False)
           model.save()
             return redirect('detail', pk=model.pk)
        else:
             return render(request, 'play/edit.html', {'form': RecForm()})
    

2 个答案:

答案 0 :(得分:2)

render()未确定网址。当您的浏览器发送某个网址的请求时,django会计算出哪个模板填充了该网址应返回的数据。

request用于帮助生成内容。但请注意,您不必使用render(),而是可以直接返回HTTPResponse()

return HttpResponse(content, content_type, status)

HTTP Response documentation

答案 1 :(得分:2)

您误解了Django请求响应周期。看看这张图: Django request-response cycle

如果我使用您的文字,render()不会使用url,那就相反了。第一个请求通过请求中间件,然后URL解析,查看中间件,然后它进入查看和模板呈现,并完成响应中间件处理。完成所有操作后,服务器会将内容传输到您的浏览器。

在基本术语中,url定义了view将被处理的内容,view定义了template将呈现的内容。