相关疑难解决方法(0)

Python Django全局变量

我在Django中寻找简单但推荐的方法,只在内存中存储变量.当Apache重新启动或Django开发服务器重新启动时,该变量将重置为0.更具体地说,我想计算每个模型实例(数据库记录)上发生特定操作的次数,但出于性能原因,我不知道我想将这些计数存储在数据库中.我不在乎服务器重启后计数是否消失.但只要服务器启动,我希望这些计数在Django shell和Web界面之间保持一致,并且我希望能够返回每个模型实例上执行操作的次数.

我不希望变量与用户或会话相关联,因为我可能希望在不登录的情况下返回这些计数(并且我希望无论用户登录什么计数都是一致的).我在描述一个全局变量吗?如果是这样,我如何在Django中使用一个?我注意到像urls.py,settings.py和models.py这样的文件似乎每个服务器启动时只被解析一次(与views.py相比,这似乎是在发出请求的时候解析的).这是否意味着我应该在其中一个文件中声明我的变量?或者我应该以某种方式将它存储在模型属性中(只要它在服务器运行时就会存在)?这可能是一个简单的问题,但我不确定它是如何在Django中完成的.

任何意见或建议都非常感谢.谢谢,乔

python memory django variables global

42
推荐指数
2
解决办法
4万
查看次数

Django - 我为什么要使用render_to_response呢?

考虑一下:

return render(request, 'index.html', {..context..})
return render_to_response('index.html', {..context..})
Run Code Online (Sandbox Code Playgroud)

一方面,render更清洁,更pythonic.另一方面,你使用request作为你的第一个参数,我觉得多余和混乱.所以我开始怀疑更大的差异......

根据文件:

render()与使用context_instance参数调用render_to_response()相同,后者强制使用RequestContext.

所以区别仅在于使用RequestContext.那么RequestContext有什么重要意义呢?让我们看看文档:

一个特殊的Context类[...]与普通的django.template.Context行为略有不同.第一个区别是它需要一个HttpRequest作为它的第一个参数.

好.这根本不重要

第二个区别是它根据你的TEMPLATE_CONTEXT_PROCESSORS设置自动填充上下文中的一些变量[...]除了这些之外,RequestContext总是使用django.core.context_processors.csrf [...]它是故意硬编码的并且不能通过TEMPLATE_CONTEXT_PROCESSORS设置关闭.

所以这是重要的部分 - 确保所有上下文处理器正常工作,重点是csrf.真的,回到我的第一个例子,这些实际上是相同的:

return render(request, 'index.html', {...})
return render_to_response('index.html', {...}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

现在,第二个例子显然要糟糕得多,整个事情似乎过于复杂.所以我的大问题是为什么要使用render_to_response?为什么不弃用呢?

想到的其他问题:

  1. 是不是有更好的方法来强制执行RequestContext默认值?
  2. 有没有办法避免request作为论点传递?这非常多余.我发现了一篇博客文章,展示了如何将render_to_response变成一个易于使用的装饰器.我们不能做类似的事render吗?
  3. 有没有想过这个问题(如果它是一个问题)?在将来的弃用时间表中我什么都看不到.我发现它特别令人困惑,考虑render专门用于解决render_to_response问题的 django 1.3 ,并且每个人都同意 你不应该使用 render_to_response

我知道它似乎有点偏离主题,但我希望得到的答案可以解释为什么render_to_response留下来和\或用例的例子,其中使用render_to_response将优先于render(如果有的话)

django

22
推荐指数
2
解决办法
2万
查看次数

标签 统计

django ×2

global ×1

memory ×1

python ×1

variables ×1