我知道我们可以在 FBV 中使用 reverse()
reverse_lazy()
在 CBV 中使用 —。我知道我们必须在 CBV 中使用 reverse_lazy()
,因为导入文件时未加载 url(参考: Reverse_lazy 和 URL Loading? )
我不明白的是:
当我们从 FBV 调用 reverse
时,url 是如何加载的?当我们在 Django 应用程序中导入 urls.py
顶部的视图时, urlpatterns
列表还有待评估。 reverse()
对 FBV 有效但对 CBV 无效?
原文由 RyuCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑: 原因:类创建过程涉及执行类的主体。
https://docs.python.org/3/reference/datamodel.html?highlight=metaclass#executing-the-class-body
我的原始答案文本。你可以忽略它——我只是把它留在原处,因为 mirek 的评论是对它的直接回应:
类属性在导入时进行评估。何时或如何发生的答案存在于 python 导入系统的深处。