多个与一个大的context_processor

时间:2017-08-21 19:02:45

标签: django performance django-context

我有多个context processor,每个我都要请求用户。每个都看起来像这样:

def UploadForm(request):
  user = request.user
  Uplo = UploadForm(request.POST or None, initial={user})
  return {'Uplo': Uplo}

我看到这个效率不高,因为我多次请求用户,所以我考虑写一个大的context processor,我在那里定义所有的表格。

def AllForms(request):
  user = request.user
  Uplo = UploadForm(request.POST or None, initial={user...})
  SetForm = SetForm(request.POST or None, initial={user...})
  ...
  return {'Uplo': Uplo,'SetForm': SetForm}

有人可以告诉我,如果我在这里获得了什么吗?上下文处理器的通用标准是什么?我在SO上找不到任何东西。

1 个答案:

答案 0 :(得分:1)

从请求中获取用户并不是一件大事。这是o(1)操作。

但是,如果多个上下文处理器没有做同样的事情并且可以同时进行,那么创建一个大的上下文处理器应该更好。原因是你必须在同一个请求中多次进出该函数。

无论如何,如果你想要明确的差异,你可以在多个和俱乐部的上下文处理器中打印时间。

是的,如果你每次都在点击数据库,你应该打它们并优化你必须达到数据库的次数。