2010-10-03 101 views
0

我在django书籍和文档后学习了Django。在django书中,这个项目被称为mysite,在这个项目中有一个名为book的应用程序。所以在这种情况下,该应用程序被称为“书”。我没有问题。关于Django应用程序名称的困惑

我的困惑出现在可重复使用的应用程序的前面。可重复使用的应用程序通常驻留在项目之外。例如,Django注册只有一个独立的文件夹“注册”。那么它的应用名称是什么? “注册”,对吗?

如果是这样的话,是不是有关于应用程序的命名有些不一致?在第一种情况下,应用程序名称似乎是项目下的文件夹名称(或子包名称),而在第二种情况下,应用程序名称是顶级包名称。

我知道你们中的大多数会说:“你为什么与应用程序名称obssessed?只要确保封装结构是正确的,Django的可以运行没有问题。”是的,在大多数情况下,应用程序名称不过是名称。除了一次:指定AUTH_PROFILE_MODULE。正如文件解释,

要表明,该模型是 用户配置模型给定站点, 填充在设置 AUTH_PROFILE_MODULE用绳子 包含下列项目的, 用点分隔:在其中用户简档 模型定义(换言之

  1. 的应用程序的名称(区分 敏感),以manage.py被传递的 名10 startapp创建应用程序)。
  2. 模型的名称(不适用于 敏感)类。

如果我有一个模型,在可重复使用包装用户的个人资料,我必须知道应用程序名称正确指定AUTH_PROFILE_MODULE。

是否Django中使用特定的路径搜索,以确定应用程序的名称?

回答

1

应用程序的名称是目录,资本的名称和所有的,除非你去额外的工作来改变在适当的__init__.py文件中的名称。毕竟,Django应用程序只是Python模块,所有相同的规则都适用。

如果你看到一个应用程序或模块名称大小写不同或其他修改,不反映实际的应用程序或模块名称。相反,你所看到的是Django管理员应用程序在某些情况下所做的一些“漂亮打印”的结果。这仅用于显示。

+0

我玩Django一段时间。我想我现在知道答案。应用程序名称是模块所在的叶包名称。因此对于像“a.b.c”这样的包,c是应用程序名称。 – 2011-05-18 15:36:40

0

当您将应用程序部署为独立软件包时,它只是另一个Python软件包,恰好实现了Django视图,模板,模板标签等。因此,Django的搜索路径本身就是Python搜索路径。这就是为什么人们说“只要确保包装结构是正确的,django就可以毫无问题地运行。”

显然,如果用别人的软件包的名称冲突,你会得到问题......

1

我的困惑出现在可重复使用的应用程序的前面。可重复使用的应用程序通常驻留在项目之外。例如,Django注册只有一个独立的文件夹“注册”。那么它的应用名称是什么? “注册”,对吗?

django-registration是项目名称。应用程序名称是registration

  • 在应用程序列表中,您只使用应用程序名称:registration
  • 在其他地方
  • 将使用import registration

如果是这样的话,是不是应用程序命名有一些不一致吗?在第一种情况下,应用程序名称似乎是项目下的文件夹名称(或子包名称),而在第二种情况下,应用程序名称是顶级包名称。

将项目看作是一个简单的应用程序集合:您可以将应用程序作为子文件夹存储,或将它们放在单独的文件夹中(必须包含在PYTHONPATH中)。在这两种情况下,应用程序名称都是相同的。

更新

manage.py添加到PYTHONPATH两个当前文件夹(这样你就可以使用import app.module)和父文件夹(所以你可以使用project.settingsproject.urls)。 因此,如果您可以将Pydev配置为将项目文件夹添加到PYTHONPATH,那么您可以将应用程序导入为app.module,而与项目名称无关。

+0

但是该项目文件夹也是一个包。如果应用程序驻留在它下面,我必须像导入“project.app.module”一样进行导入,因为应用程序没有理由知道项目名称,所以我认为这是不合理的。所以我喜欢将应用程序放在顶层包装上。但是Pydev除了项目下的子文件夹之外别无选择。必须做一些手动工作与Pydev :(:) – 2010-10-04 15:22:50

+0

到您的更新:感谢您的澄清。 – 2010-10-06 15:54:41

0

应用程序名称就是Python模块的名称。而已。

python模块名称是模块根文件夹的大小写名称,它必须包含init .py文件。

如果你想知道这个名字是什么,去你的网站包文件夹,并寻找你的模块。