python - 在外部 .py 文件中使用 django 模型
问题描述
我正在尝试制作一个需要访问 django 应用程序数据库的电报机器人。
我想避免在views.py 中创建webservices 来管理内容,因为我不想创建一个API,只想让事情暂时分开,所以我需要访问电报机器人中的django ORM。
我已经在我的机器人主文件中导入了模型,但我收到了这条消息:
File "C:\Python37-32\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
收到此消息后,我将应用程序添加到设置中,将此行添加到INSTALLED_APPS
变量:'localadmin.apps.BotConfig'
以及 apps.py 文件中的下一行:
class BotConfig(AppConfig):
name = 'localadmin.bot'
请记住,有一个名为“bot”的文件夹,其中包含启动机器人的 main.py 文件。所以,我认为,一切都井井有条,但是,随着这些变化,我收到了下一条错误消息。
File "C:\Python37-32\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
所以我想我的问题是,我需要使用适当的 django 应用程序来使用模型,但我不能这样做,因为我的应用程序是一个主要的电报机器人包装器。
我尝试过的另一个选择是将主包装电报机器人代码放在我的应用程序的 views.py 上,然后,当启动 django 服务器时,在单独的线程上启动电报机器人功能,但电报信号返回错误提示我说它只能在主线程上运行...
所以当我用尽想法的那一刻......
解决方案
正如文件所述
如果你正在使用 Django “独立”的组件——例如,编写一个 Python 脚本来加载一些 Django 模板并呈现它们,或者使用 ORM 来获取一些数据——除了配置设置之外,你还需要一个步骤.
在设置 DJANGO_SETTINGS_MODULE 或调用 configure() 之后,您需要调用 django.setup() 来加载设置并填充 Django 的应用程序注册表
推荐阅读
- cumulocity - 如何使用 c8y 中的事件处理脚本在数据资源管理器图形模式表中显示自定义信息
- git - 如何将 git 分支获取到先前的提交并将其作为新的 HEAD 推送?
- swift - 快速词典:地图中的地图
- laravel - Laravel MultiAuth 已登录,但将我视为访客
- python - shape(150,) 和 shape (150,1) 有什么区别?
- reactjs - 如何在减速器中使用先前的状态属性
- javascript - 我们可以将量角器测试与 ALM(质量中心)集成吗
- django - Django - 缓存 InMemoryUploadedFile (request.FILES['file'])
- user-interface - 如何确保页面在柏树中完全加载
- angular - 退出组件后保留角度样式