【问题标题】:Django: What is the stack order in Django?Django:Django 中的堆栈顺序是什么?
【发布时间】:2010-01-29 05:36:29
【问题描述】:

我认为这是正确的提问方式。我想知道代码的哪些部分首先执行,其次执行,等等。

我的假设是,但我不知道:

  1. 请求
  2. 中间件
  3. 查看
  4. 型号
  5. 中间件
  6. 响应

我问的原因是因为我希望基于请求变量在模型中动态发生某些事情,并且我正在尝试设备自动将请求添加到模型层而不传递的最佳方式通过视图。我会假设某种中间件奇妙的装置会以某种方式做到这一点。

【问题讨论】:

  • 你能再具体一点吗? “将请求添加到模型层而不通过视图传递”对我来说不太有意义。您尝试与模型通信的请求中包含什么内容?
  • 我正在尝试查看当前 request.user 在 models.py 中是谁,所以我可以使用自定义管理器根据用户进行过滤。

标签: django django-models django-middleware


【解决方案1】:

回答您的澄清评论 - 您无法从这里到达那里。

models.py 只是一个放置模型类的文件,模型类只是可以从各处访问的类。除非将request 对象传递给您正在使用的函数,否则它不存在,并且没有request.user。模型可以在任何地方使用,而不仅仅是在有request 的上下文中使用。

如果您需要使用请求对象,请将其作为参数传递。如果这没有意义,那么您使用的模型有误。

【讨论】:

    【解决方案2】:

    模型和模板都不是堆栈的一部分。在视图中完成工作。

    【讨论】:

    • 你能把你的答案改一个字符,这样我就可以投票了。它说我不能投票大声笑。
    【解决方案3】:

    我觉得更像是:

    1. 请求
    2. 中间件(URL 映射器)
    3. 查看
      1. 模型(如果视图请求)
      2. 模板(如果视图要求)
    4. 中间件(响应输出)

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2014-10-16
      • 1970-01-01
      • 2020-09-18
      • 2012-04-21
      • 2014-08-09
      • 1970-01-01
      • 2016-03-01
      • 2010-11-09
      相关资源
      最近更新 更多