2017-08-12 24 views
0

我試圖圍繞Django概念包裹頭部,但是我正在使用URLResolver reverse_lazy()。據我所知,當我想要反轉到一個尚未加載的URL時,我必須使用reverse_lazy()。所以當我創建一個CBV並聲明一個success_url時,我使用了reversy_lazy。這意味着該文件執行時不會導入url。Reverse_lazy和URL加載?

這讓我感到困惑,因爲我認爲服務器在執行任何操作前都會加載所有的URL。那麼如何在執行時不加載URL?

如果有人會給我一個答案,我會很高興。

回答

1

嗯,首先,URL解析器本身是懶惰的,因此在第一次調用resolve()reverse()(通常是第一次請求)時會發生加載。但在這種情況下,這並不重要。

當URL解析器被初始化時,它會導入您的URL配置,然後導入您的視圖。因此,當您導入視圖並設置了success_url時,解析器僅在其初始化過程的一半。在這一點上調用reverse()將無法​​工作,因爲解析器沒有全部信息來反轉視圖名稱。