[英]Django - Render view on user_logged_out signal
我希望能够在触发user_logged_out信号时呈现不同的注销模板。 我可以捕获信号并正确检查我的状况,并且我有一个带有命名URL的视图,该视图可以正常工作,但似乎无法呈现该视图。
我已经使用基于类和功能的视图尝试了所有这些方法,但是无法使其正常工作。 使用ipdb,我可以获得在控制台中呈现的模板,但是无法找出正确的方式来返回它/调用视图以使其返回。 思考?
@receiver(user_logged_out)
def my_logged_out_signal_handler(sender, request, user, **kwargs):
if user.has_condition:
# tried this
resolve(reverse('my_named_url', kwargs={'kwarg1': 'something'})).func(request, something)
# and this
render_to_response(resolve(reverse('my_named_url', kwargs={'kwarg1': something})).func(request, kwarg1=something).render())
# and this
render(MyClassView.as_view()(request, kwarg1=something))
# and this
return (resolve(reverse('my_named_url', kwargs={'kwarg1': something})).func(request, kwarg1=something).render())
# and this
return HttpResponse(resolve(reverse('my_named_url', kwargs={'kwarg1': something})).func(request, kwarg1=something).render())
信号处理程序不是视图,它无法呈现/返回响应。
您可以简单地在自己的视图中处理逻辑,然后从那里调用或重定向到auth注销函数。 像下面这样。
from django.shortcuts import redirect
def my_logout(request):
kwargs = {}
if my_condition:
kwargs['template_name'] = 'my_template.html'
kwargs['extra_context'] = ...
return redirect('logout', **kwargs)
找到了一个聪明的解决方案,可以根据需要从任何地方重定向。 https://djangosnippets.org/snippets/2541/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.