我在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