【发布时间】:2013-05-16 13:24:20
【问题描述】:
我开始使用 django_openid_auth (https://launchpad.net/django-openid-auth),它工作得很好。
我设法连接到我的 openid 提供程序并获得用户身份验证。事情是在 django_open_auth.views.login_complete 有这个块:
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 中
在该文件中有: 从 django_openid_auth.signals 导入 openid_login_complete
def update_request(sender, **kwargs):
logger.debug('test')
openid_login_complete.connect(update_request)
但调试行永远不会出现在日志中。
那么我做错了什么?我检查了其他一些 django 信号线程,其中一个说导入必须完全相同,否则不会出现连接。
但我怎么能调试呢?问题出在哪里 - 连接是否永远不会发生,因为我将连接放置在错误的位置或者是其他地方的问题?我怎样才能找到这个?
艾伦
编辑:我立即尝试了建议的所有内容并且我得到了它的工作。我将信号放入单独的文件中,将其导入正确的位置,并遵循 karthikr (https://stackoverflow.com/users/1628832/karthikr) 给出的建议。我还注意到我的记录器没有使用正确的日志记录配置,所以一切可能都在早些时候工作,只是日志记录不起作用。
所以是的:)。当你感觉不舒服时不应该工作:)。谢谢大家的帮助。
【问题讨论】:
-
将
openid_login_complete.connect(update_request)更改为openid_login_complete.connect(update_request, instance)它需要一个发送者实例。 -
对不起,我不太明白,您要订阅
openid_login_complete信号吗? -
是的,我想在信号上升(发送、触发等)之后做一些事情。
标签: django django-signals django-openid-auth