我在django中製作了一個非常簡單的應用程序,其中有一個模型,當請求發出時,我基本過濾了來自該模型的對象,然後在模板中呈現它們。它似乎工作正常,但當我去檢查我的數據庫日誌。我發現Django在每個請求上連接兩次以檢索關於請求會話的信息。任何人都可以幫助我解釋爲什麼會發生這種情況?請參閱下面的示例日誌django連接兩次到數據庫
110414 18:28:29 8 Connect [email protected] on project1_dev
8 Query SET NAMES utf8
8 Query set autocommit=0
8 Query SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = '7af6952f847471091a83ee9382bb858d' AND `django_session`.`expire_date` > '2011-04-14 10:28:29')
8 Query SELECT `category_main`.`id`, `category_main`.`slug`, `category_main`.`is_active`, `category_main`.`site_id`, `django_site`.`id`, `django_site`.`domain`, `django_site`.`name` FROM `category_main` INNER JOIN `category_main_i18n` ON (`category_main`.`id` = `category_main_i18n`.`main_id`) INNER JOIN `django_site` ON (`category_main`.`site_id` = `django_site`.`id`) WHERE (`category_main_i18n`.`language` = 'en' AND `category_main`.`is_active` = 1)
8 Quit
9 Connect [email protected] on project1_dev
9 Query SET NAMES utf8
9 Query set autocommit=0
9 Query SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = '7af6952f847471091a83ee9382bb858d' AND `django_session`.`expire_date` > '2011-04-14 10:28:29')
9 Quit
是的,我正在使用django來提供文件。但我做了一個快速的事情,我只是將調試模式設置爲false,因爲如果debug爲true,它有條件地包含url。我還刪除了所有服務於任何css或js的其他標記,並保留了一個簡單的for循環來打印查詢,並且仍然看到與上面相同的結果。它查詢數據庫兩次和奇怪的部分,它關閉連接並再次打開。 – 2011-04-14 16:08:07
您可以嘗試使用django調試工具欄來跟蹤您的SQL請求,它可能會讓您有更多的智慧來解決這個問題。 – 2011-04-18 15:24:49