为什么传递表示对象的字符串而不是传递对象?

时间:2011-05-27 11:11:00

标签: python django object

以下代码来自Django的{​​{1}}。由于settings.py中的所有内容都是对象,为什么不将已安装的应用程序作为对象元组传递:

Python

为什么他们这样做有充分的理由:

INSTALLED_APPS = (
  django.contrib.auth,
  django.contrib.contenttypes,
.....

代替?

我是INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', ..... Python的新手,所以请不要过多地评价我。

2 个答案:

答案 0 :(得分:6)

将模块或类名作为字符串传递是避免循环导入错误的典型解决方案 例如,如果设置文件包含import myapp.models且myapp.models包含from django.conf import settings,则会导致循环导入。

答案 1 :(得分:1)

您必须先import django,然后才能使其正常工作,否则您将遇到错误。