Django应用启动时如何执行一波初始化添加数据?只需要简单的三步

需求: 希望在运行项目前进行一些数据初始化,包括但不限于一些全局变量、数据库等。

实现方法:很简单,只需要三步

(1)确保app被注册到settings文件中的install_apps中:

(2)在该app的__init__文件中设定default_app_config:

default_app_config = 'apps.home.apps.HomeConfig'

(3)在该app的apps文件中,继承AppConfig类;重写name属性,重写ready方法;其中name属性必须与注册的app名一致;ready方法中写入你的初始化行为逻辑代码即可。

from django.apps import AppConfig

class HomeConfig(AppConfig):
    name = "apps.Home"

    def ready(self):
        
        pass

(4) 执行python manage.py runserver 即可看到ready方法被调用;

注意的点:有些同学可能会发现ready方法被调用了两次,这是因为你使用了python manage.py runserver该运行方式启动项目,这种方式会启动两个进程,其中一个进程用于监听用户修改代码后重新启动,但在真实环境中使用uwsgi启动项目则只会调用一次ready方法。如果你不愿意启动两个进程,也可以使用 python manage.py runserver --noreload 启动项目 --noreload关闭监听代码修改重启程序的意思。

另外补充,如果想调用AppConfig中初始化的数据,在你需要调用的地方通过django的apps钩子可以获取到 AppConfig 实例化对象,通过对象调用的方式即可获取到你需要的数据。


from django.apps import apps
 
my_config = apps.get_app_config('Home')  # 此处填写需要获取的app名

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值