【问题标题】:What is the purpose of apps.py in Django 1.9?Django 1.9 中apps.py 的用途是什么?
【发布时间】:2015-12-24 01:21:06
【问题描述】:

我刚刚翻过alpha release notes for Django 1.9,看到startapp管理命令now adds an apps.py file

这个文件的目的是什么? startapp documentation 没有提供更多信息。

【问题讨论】:

    标签: django


    【解决方案1】:

    apps.py 文件的用途:

    创建此文件是为了帮助用户为应用添加任何application configuration。使用它,您可以配置应用程序的一些属性。

    来自Application Configuration 文档:

    应用程序配置对象存储应用程序的元数据。 一些属性可以在 AppConfig 子类中配置。其他的是 由 Django 设置,只读。

    来自docs:的示例

    假设您正在创建一个名为 "Rock ’n’ roll" 的可插拔应用程序,然后为管理员提供正确的名称,我们可以执行以下操作:

    rock_n_roll 应用程序中,我们创建了一个RockNRollConfig AppConfig 类。

    #rock_n_roll/apps.py
    from django.apps import AppConfig
    
    class RockNRollConfig(AppConfig): # Our app config class
        name = 'rock_n_roll'
        verbose_name = "Rock ’n’ roll"
    

    通过在rock_n_roll/__init__.py 文件中指定default_app_config,我们可以让您的应用程序默认加载这个AppConfig 子类。

    # rock_n_roll/__init__.py    
    default_app_config = 'rock_n_roll.apps.RockNRollConfig'
    

    INSTALLED_APPS 只包含'rock_n_roll' 时,这样做会导致使用RockNRollConfig。这使我们能够使用AppConfig 功能,而无需我们的用户更新他们的INSTALLED_APPS 设置。

    【讨论】:

    • 很遗憾我没有得到你的答案
    • without requiring our users to update their INSTALLED_APPS setting. :这是什么意思:基本上如果我不做default_app_config = 'rock_n_roll.apps.RockNRollConfig' 那么我必须在INSTALLED_APPS 中提及default_app_config = 'rock_n_roll.apps.RockNRollConfig'
    【解决方案2】:

    这是放置您的application configuration 的推荐位置。此功能自 1.7 起就已存在,但为了促进其使用并简化配置,apps.py 文件已添加到默认应用程序模板中。

    【讨论】:

      【解决方案3】:

      apps.py 只是更新应用程序相关配置的另一种方式,现在当您使用以下命令创建新应用程序时

      python manage.py startapp myapp
      

      您不需要更新settings.INSTALLED_APPS,默认情况下,上面的命令会将以下代码添加到相应的myapp/apps.py文件中

      from django.apps import AppConfig
      
      
      class myappConfig(AppConfig):
          default_auto_field = 'django.db.models.BigAutoField'
          name = 'myapp'
      

      【讨论】:

        猜你喜欢
        • 2020-07-29
        • 2014-08-07
        • 2019-08-18
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多