【问题标题】:What does this mean in the django documentation about class-based views?这在 django 文档中关于基于类的视图是什么意思?
【发布时间】:2019-11-03 03:48:37
【问题描述】:

这里是新手。当我阅读 django 文档时,我想出了一个我无法完全理解的注释。

它说: 笔记 虽然您的类会针对发送给它的每个请求进行实例化,但通过 as_view() 入口点设置的类属性仅在导入 URL 时配置一次。 链接在这里: https://docs.djangoproject.com/en/2.2/topics/class-based-views/intro/

那么哪个更好呢?各自有什么优势?两种我都试过了,没有任何区别(可以肯定是我考虑的不够)

【问题讨论】:

    标签: python django view


    【解决方案1】:

    如果您向 as_view() 方法传递的任何值在服务器启动后可能会发生变化,例如某些函数调用或数据库查询,其返回值可能会在某些用户使用网站后发生变化,则只会对其进行评估一次,在加载 url 时。

    假设您正在通过当前时间,例如:

    path('about/', GreetingView.as_view(greeting=timezone.now())),
    

    该注释只是说,即使服务器运行了一个月,GreetingView 的“greeting”属性的值也会对所有请求保持不变,因为 timezone.now() 只被调用一次。

    这样的参数非常适合重用 View 类,只需进行最少的更改。这完全取决于您的用例。 例如:

    path('add-car/', AddView.as_view(form=AddCarForm)),
    path('add-bus/', AddView.as_view(form=AddBusForm)),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 2015-03-22
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多