我开始使用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中
在该文件中有: from django_openid_auth.signals import openid_login_complete
def update_request(sender, **kwargs):
logger.debug('test')
openid_login_complete.connect(update_request)但该调试行从未出现在日志中。
那么我到底做错了什么呢?我检查了其他一些django signals线程,其中一个说导入必须完全相同,否则连接就不会出现。
但是我怎么才能调试它呢?问题在哪里-是因为我把连接放错了地方而导致连接从未发生,还是在其他地方出现了问题?我怎么才能知道这件事呢?
艾伦
编辑:我一次尝试了所有的建议,我让它工作了。我将信号放在单独的文件中,将其导入到正确的位置,并遵循karthikr (https://stackoverflow.com/users/1628832/karthikr)给出的建议。我还注意到我的记录器没有使用正确的日志配置文件,所以之前可能一切都正常,只是日志没有工作。
所以是的:)。不应该在你感觉不舒服的时候工作:)。谢谢你们的帮助。
发布于 2013-05-17 00:39:11
你在哪里编写信号回调?您是否正在导入在发送信号之前注册回调的模块?
例如,我在my_app/signals.py中使用了信号和代码。稍后,我转到my_app/models.py并添加以下代码行:
import my_app.signals在其中编写回调must be imported before the signals raises的文件
这段代码应该放在哪里?你可以把信号处理和注册码放在你喜欢的任何地方。但是,您需要确保在早期导入它所在的模块,以便在需要发送任何信号之前注册信号处理。这使得你的应用程序的models.py是一个放置信号处理程序注册的好地方。
您也可以尝试使用@register装饰器进行注册。它几乎是一样的,但你可以试着看看它是否以另一种方式工作:
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')希望这能有所帮助!
https://stackoverflow.com/questions/16588685
复制相似问题