嗨,我正在定义自己的信号和接收器。我只想知道我应该在哪里放置我的代码。它在models.py 或views.py 中。请帮忙
问问题
2228 次
4 回答
4
将您的信号功能放入signals.py
并且不要忘记将应用程序配置放入__init__.py
文件中,并将准备好的方法放入apps.py
文件中。
apps.py
:
from django.apps import AppConfig
class AppNameConfig(AppConfig):
name = 'app_name'
def ready(self):
import app_name.signals
__init__.py
(应用程序文件夹):
default_app_config = 'app_name.apps.AppNameConfig'
于 2020-04-13T07:39:28.373 回答
0
- 在您的应用程序中创建 python 文件
signals.py
。 __init__.py
在您的应用程序中添加这一行。import signals
重启django项目。
解决它!
于 2015-03-03T15:45:05.990 回答
0
您可以创建signals.py
文件。但不能添加import signals
到__init__.py
文件中。因为信号相关的模型还没有加载。因此,在apps.py 文件中,您可以找到从类继承的AppConfig
类,并且该类具有方法ready(self)
方法。您应该在此函数中导入信号:
from django.apps import AppConfig
class MainConfig(AppConfig):
name = 'main'
def ready(self):
import main.signals
于 2018-09-23T14:40:54.793 回答
0
给定一个名为“app”的应用程序来处理名为“Model”的模型的 pre_save 信号
应用程序.py
from django import apps
from django.db.models import signals
class AppConfig(apps.AppConfig):
name = 'app'
def ready(self):
# import here to avoid circular imports
from app import signals as app_signals
signals.pre_save.connect(app_signals.model_pre_save, sender=self.get_model('Model'))
信号.py
def model_pre_save(sender, instance, **kwargs):
if kwargs.get('raw', False):
return # raw implies fixture, ignore
# add code here to handle signal
于 2019-12-02T22:48:08.307 回答