繁体   English   中英

Django如何判断信号是否在请求中被调用

[英]Django how to tell if signal was called in a request or not

我正在使用Django 1.10。

有没有办法告诉信号触发该信号的save()是在视图Request调用还是由“手动” save()调用?

我有一个信号可以执行某些操作。 我要执行其他操作,具体取决于我是否处于请求中间(在Celery任务中更新对象)。

简短的答案:您不能。 至少不是开箱即用。

更长的答案:您可以使用一些threadlocal hack解决此问题(例如,以该项目为例) ,但请仔细阅读警告。

或者,您可以使用除orm的pre / post保存信号之外的其他方式来触发您的操作-例如从有意义的地方发送您自己的信号 就我而言,我首先要设法解决问题。

看一下Django文档,但是据我所知,您应该在/urproj/urapp/models.py中定义模型,通常这是一个类声明。 并在/urproj/url.py内部使用route方法,也可以在您的应用程序内部。 我有这种方法来检测Get请求是否正常,例如?

class Expense(models.Model):
    text = models.CharField(max_length=255)
    date = models.DateTimeField()
    amount = models.BigIntegerField()
    user = models.ForeignKey(User)

def __unicode__(self):
    return "{}-{}-{}".format(self.date, self.user, self.amount)

那我用这样的路由方法?

from . import views
urlpatterns = [
              url(r'^submit/expense/?$', views.submit_expense, name='submit_expense'),
              ]

希望我已经回答了您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM