首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django:连接到现有信号失败

django:连接到现有信号失败
EN

Stack Overflow用户
提问于 2013-05-16 21:24:20
回答 1查看 213关注 0票数 0

我开始使用django_openid_auth (https://launchpad.net/django-openid-auth),它工作得很好。

我设法连接到我的openid提供商并获得用户身份验证。问题是,在django_open_auth.views.login_complete中有这样一个代码块:

代码语言:javascript
复制
if user is not None:
    if user.is_active:
        auth_login(request, user)
        response = HttpResponseRedirect(sanitise_redirect_url(redirect_to))

        # Notify any listeners that we successfully logged in.
        openid_login_complete.send(sender=UserOpenID, request=request,
            openid_response=openid_response)

        return response
    else:
        return render_failure(request, 'Disabled account')

注意#notify注释。

我创建了django-openid-auth OpenIdBackend类的OpenIDBackend子类,并将其放入我自己项目的core.authentication.openidbackend中

在该文件中有: from django_openid_auth.signals import openid_login_complete

代码语言:javascript
复制
def update_request(sender, **kwargs):
    logger.debug('test')

openid_login_complete.connect(update_request)

但该调试行从未出现在日志中。

那么我到底做错了什么呢?我检查了其他一些django signals线程,其中一个说导入必须完全相同,否则连接就不会出现。

但是我怎么才能调试它呢?问题在哪里-是因为我把连接放错了地方而导致连接从未发生,还是在其他地方出现了问题?我怎么才能知道这件事呢?

艾伦

编辑:我一次尝试了所有的建议,我让它工作了。我将信号放在单独的文件中,将其导入到正确的位置,并遵循karthikr (https://stackoverflow.com/users/1628832/karthikr)给出的建议。我还注意到我的记录器没有使用正确的日志配置文件,所以之前可能一切都正常,只是日志没有工作。

所以是的:)。不应该在你感觉不舒服的时候工作:)。谢谢你们的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-17 00:39:11

你在哪里编写信号回调?您是否正在导入在发送信号之前注册回调的模块?

例如,我在my_app/signals.py中使用了信号和代码。稍后,我转到my_app/models.py并添加以下代码行:

代码语言:javascript
复制
import my_app.signals

在其中编写回调must be imported before the signals raises的文件

这段代码应该放在哪里?你可以把信号处理和注册码放在你喜欢的任何地方。但是,您需要确保在早期导入它所在的模块,以便在需要发送任何信号之前注册信号处理。这使得你的应用程序的models.py是一个放置信号处理程序注册的好地方。

您也可以尝试使用@register装饰器进行注册。它几乎是一样的,但你可以试着看看它是否以另一种方式工作:

代码语言:javascript
复制
from django_openid_auth.signals import openid_login_complete
from django.dispatch import receiver

@receiver(openid_login_complete)
def update_request(sender, **kwargs):
    logger.debug('test')

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16588685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档