当前位置: 首页 > 面试题库 >

重写AppConfig.ready()

贡烨烁
2023-03-14
问题内容

在AppConfig类的代码中,我们可以看到:

def ready(self):
    """
    Override this method in subclasses to run code when Django starts.
    """

好吧,这是我的例子:

my_app / apps.py

class MyAppConfig(AppConfig):
    name = 'my_app'

    def ready(self):
        print('My app')

我只想使现成的方法起作用。也就是说,当Django找到my_app时,让它运行ready方法。

该应用已在INSTALLED_APPS中注册。

我执行’python manage.py runserver’。并没有打印任何内容。

如果我在ready方法中放置一个断点,则调试器不会在那里停下来。

你能帮我吗:我在这里理解的错误是什么?先感谢你。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app',
]

我创建了一个视图

my_app / views.py

def index(request):
    print('Print index')

urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', my_app_views.index, name='home')
]

好吧,视图正在工作。这意味着该应用程序已注册。


问题答案:

你需要执行以下两项操作之一。要么明确地说出AppConfig你想要的INSTALLED_APPS

INSTALLED_APPS = [
    'my_app.apps.MyAppConfig'
]

或者,default_app_config__init__.py你的应用程序中定义:

# my_app/__init__.py
default_app_config = 'my_app.apps.MyAppConfig'

(并保持INSTALLED_APPS原样)。

由于目前是Django,找不到AppConfig适用于该应用程序的任何内容,只是假设其中没有一个。因此,你的视图等将起作用,但该ready()方法将永远不会被调用



 类似资料:
  • "The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Send

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1866

  • 问题内容: 基本上,这就是我要实现的目标。 classname @ address(?)[原始],对象的名称,对象的年龄 问题,被递归调用。 我不能打电话,因为那不是我想要的。我想叫原件。 这个 由于明显的原因而无法正常工作。 我已经精疲力竭了,一旦方法被重写,可以做到这一点吗?即所谓的原始实现? (我的编辑)基本上,我需要的是:覆盖toString以显示’this’对象的两个属性,并且我也想让’

  • 问题内容: 鉴于Python文档为: 您可以在子类中重写此方法。标准的run()方法调用传递到对象构造函数的可调用对象作为目标参数(如果有),并分别从args和kwargs参数中获取顺序和关键字参数。 我构造了以下代码: 但是当我执行它时,出现以下错误: 似乎我缺少明显的东西,但是我看到的各种示例都可以使用此方法。最终,我尝试将字符串和字典传递给线程,如果构造方法不是正确的方法,而是在启动线程之前

  • Apache 提供了基于正则表达式规则动态修改传入的请求的 URL 的方法。这用于以自己喜欢的任意方法映射任意 URL 到你的内部 URL 结构。 它支持无限的规则,以及为每个规则附加条件,从而提供了一个真正灵活且强大的 URL 操作机制。URL 操作可以依赖于各种测试,例如服务器变量,环境变量,HTTP 头,时戳,甚至外部数据库查询等,以便完成 URL 单元匹配。 这个模块在服务器上下文 (),

  • subA类是A类的子类。我试图重写一个方法,但不知怎的,它不允许我重写它。为什么会这样?是因为参数中的参数吗? 读取错误消息: 名称冲突:subA中的add(E#1)和A中的add(E#2)具有相同的擦除,但两者都不重写另一个,其中E#1、E#2是类型变量: E#1扩展了subA类中声明的对象 E#2扩展了A类中声明的对象 超类A: 子类subA: