我按照django书和文件学习了Django。在django书的例子中,该项目被称为mysite,在这个项目中有一个叫做book的应用程序。所以在这种情况下,应用程序被称为“书”。我没问题。
我的混乱出现在可重用的应用程序面前。可重用的应用程序通常位于项目之外。例如,django-registration只有一个独立的文件夹“registration”。那它的应用名称是什么? “注册”,对吧?
如果是这种情况,那么应用程序命名是否存在一些不一致之处?在第一种情况下,app name似乎是项目下的文件夹名称(或子包名称),而在第二种情况下,app name是顶级包名称。
我知道你们大多数人都会说“为什么你们对应用程序名称感到厌烦?只要确保包装结构正确并且django可以毫无问题地运行。”是的,在大多数情况下,应用名称只是一个名称。除一次外:指定AUTH_PROFILE_MODULE。正如文件所解释的那样,
表示此型号是 给定站点的用户配置文件模型, 填写设置 带字符串的AUTH_PROFILE_MODULE 由以下项目组成, 用点分隔:
- 申请表的名称(案例 敏感的)用户个人资料 模型被定义(换句话说, 传递给manage.py的名称 startapp来创建应用程序)。
- 模型的名称(不是案例 敏感的)。
醇>
如果我将模型作为可恢复包中的用户配置文件,我必须知道应用程序名称才能正确指定AUTH_PROFILE_MODULE。
django是否使用某个路径搜索顺序来决定应用名称?
答案 0 :(得分:1)
应用程序的名称是目录的名称,大写和全部,除非您在适当的__init__.py
文件中进行额外的工作来更改名称。毕竟,Django应用程序只是Python模块,所有相同的规则都适用。
如果您看到具有不同大小写或其他修改的应用或模块名称,则不会反映实际的应用或模块名称。相反,你所看到的是一些“漂亮打印”的结果,Django管理员应用程序在某些情况下已知。这仅供显示。
答案 1 :(得分:1)
我的混乱出现在可重用的应用程序面前。可重用的应用程序通常位于项目之外。例如,django-registration只有一个独立的文件夹“registration”。那它的应用名称是什么? “注册”,对吧?
django-registration
是项目名称。应用程序名称为registration
:
registration
import registration
如果是这种情况,那么应用程序命名是否存在一些不一致之处?在第一种情况下,app name似乎是项目下的文件夹名称(或子包名称),而在第二种情况下,app name是顶级包名称。
将项目视为一个简单的应用程序集合:您可以将应用程序存储为子文件夹,或将它们放在单独的文件夹中(必须包含在PYTHONPATH中)。在这两种情况下,应用程序名称都是相同的。
<强>更新强>
manage.py
将PYTHONPATH添加到当前文件夹(因此您可以使用import app.module
)和父文件夹(因此您可以使用project.settings
和project.urls
)。
因此,如果您可以将Pydev配置为将项目文件夹添加到PYTHONPATH,那么您可以将应用程序导入为app.module
,而与项目名称无关。
答案 2 :(得分:0)
当您将app和app作为独立包进行部署时,它只是另一个Python包,它恰好实现了Django视图,模板,模板标签等。因此,Django的搜索路径就是Python搜索路径本身。这就是人们说“只要确保包装结构正确并且django可以毫无问题地运行”的原因。
显然,如果包名与其他人的包冲突,你就会遇到问题......
答案 3 :(得分:0)
应用名称只是Python模块的名称。没什么。
python模块名称是模块根文件夹的案例名称,必须包含 init .py文件。
如果您想知道这个名称是什么,请转到您的site-packages文件夹并查找您的模块。