Python 关于django应用程序的困惑';姓名

Python 关于django应用程序的困惑';姓名,python,django,Python,Django,我学习Django是根据Django的书和文件。在django book exmaple中,该项目名为mysite,该项目中有一个名为book的应用程序。因此,在本例中,该应用程序称为“book”。我没问题 我的困惑出现在可重用应用程序面前。可重用的应用程序通常位于项目外部。例如,django registration只有一个独立的文件夹“registration”。那么它的应用程序名是什么?“注册”,对吗 如果是这样的话,应用程序命名是否存在一些不一致性?在第一种情况下,app name似乎是

我学习Django是根据Django的书和文件。在django book exmaple中,该项目名为mysite,该项目中有一个名为book的应用程序。因此,在本例中,该应用程序称为“book”。我没问题

我的困惑出现在可重用应用程序面前。可重用的应用程序通常位于项目外部。例如,django registration只有一个独立的文件夹“registration”。那么它的应用程序名是什么?“注册”,对吗

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

我知道你们中的大多数人会说“为什么你对app name感到惊讶?只要确保包结构正确,django可以毫无问题地运行就行了。”是的,在大多数情况下,app name只是一个名称。除一种情况外:指定AUTH_PROFILE_模块。正如文件所解释的那样

表示此模型是 给定站点的用户配置文件模型, 填空 使用字符串验证配置文件模块 由下列项目组成:, 由点分隔:

  • 应用程序(案例)的名称 敏感)其中的用户配置文件 模型已定义(换句话说 传递给manage.py的名称 startapp以创建应用程序)
  • 模型的名称(不是大小写) 敏感)类
  • 如果我在可恢复包中有一个模型作为用户配置文件,我必须知道应用程序名称才能正确指定AUTH\u profile\u模块


    django是否使用特定的路径搜索顺序来决定应用程序名称?

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


    显然,如果包名与其他人的包冲突,您将遇到问题…

    应用程序的名称是目录名、大写字母和全部,除非您在相应的
    \uuuu init\uuuuuuuy.py
    文件中进行额外的更改。毕竟,Django应用程序只是Python模块,所有规则都适用

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

    我的困惑出现在可重用应用程序面前。可重用的应用程序通常位于项目外部。例如,django registration只有一个独立的文件夹“registration”。那么它的应用程序名是什么?“注册”,对吗

    django registration
    是项目名称。应用程序名称为
    注册

    • 在应用程序列表中,您仅使用应用程序名称:
      注册
    • 在其他地方,您将使用
      导入注册
    如果是这样的话,应用程序命名是否存在一些不一致性?在第一种情况下,app name似乎是项目下的文件夹名称(或子包名称),而在第二种情况下,app name是顶级包名称

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

    更新

    manage.py
    将当前文件夹(因此可以使用
    import app.module
    )和父文件夹(因此可以使用
    project.settings
    project.url
    )添加到python路径。
    因此,如果您可以配置Pydev将项目文件夹添加到PYTHONPATH,那么您可以将应用作为
    app.module
    导入,而不依赖于项目名称。

    应用名称就是Python模块的名称。没别的了

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


    如果您想知道这个名称,请转到您的站点软件包文件夹,查找您的模块。

    但是porject文件夹也是一个软件包。如果应用程序位于它下面,我必须像“project.app.module”那样导入,我认为这是不礼貌的,因为应用程序没有理由知道项目名称。所以我喜欢将应用程序放在最上面的包中。但是Pydev除了项目下的子文件夹之外没有其他选择。必须使用Pydev做一些手工工作:(.我已经使用Django一段时间了。我想我现在知道答案了。App name是模块所在的叶包名称。因此对于像“a.b.c”这样的包,c是App name。