我试图理解 Django 概念,但我对 URLResolver 很挣扎reverse_lazy()
。据我所知,我必须使用reverse_lazy()
当我想反转到尚未加载的 URL 时。所以当我创建 CBV 并声明success_url
, I use reverse_lazy()
。这意味着文件执行时不会导入 URL。
这让我感到困惑,因为我认为服务器在执行任何操作之前启动时会加载所有 URL。那么为什么执行时 URL 没有加载呢?
如果有人能给我答案,我会很高兴。
嗯,首先,URL 解析器本身是惰性的,所以加载发生在第一次调用时resolve()
or reverse()
已做出(通常是在第一个请求时)。但在这种情况下这并不重要。
当 URL 解析器初始化时,它会导入您的 URL 配置,进而导入您的视图。所以当你的视图被导入时success_url
设置后,解析器仅完成其初始化的一半。呼唤reverse()
此时将无法工作,因为解析器尚不具备反转视图名称的所有信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)