这个错误有点重复,随处可见,但我对发生的事情有点困惑。
我正在尝试在 URL 中传递一个 token ,以便用户登录,如下所示 http://localhost:8000/auth/login/?token=token
。用户通过身份验证后,应将其重定向到仪表板
。但我得到this error 。你能帮我理解发生了什么吗?
查看:
import logging
from django.contrib.auth import authenticate, login
from django.core.urlresolvers import reverse, reverse_lazy
from django.shortcuts import render
from django.views.generic import View
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.contrib.auth.backends import ModelBackend
from rest_framework_jwt.settings import api_settings
from business_accounts.models.my_user import MyUser
logger = logging.getLogger(__name__)
jwt_decode_handler = api_settings.JWT_DECODE_HANDLER
class UrlGatewayLogin(View):
def get(self, request, **kwargs):
page_group = kwargs.get('page_group')
token = request.GET.get('token')
try:
payload = jwt_decode_handler(token)
user = MyUser.objects.get(pk=payload.get('id'))
user.backend = 'django.contrib.auth.backends.ModelBackend'
except MyUser.DoesNotExist:
return None
authenticate(token=token)
logger.warning("User is=%s", user)
print(user)
login(request, user)
return HttpResponseRedirect('dashboard', {'page_group': page_group})
网址:
url(r'^auth/login/$', UrlGatewayLogin.as_view(), name='auth-login')
最佳答案
正如错误所示,您的 View 应该始终返回一个HttpResponse
对象。目前,您的 except block
中已 return None
。
您可以通过执行以下操作来防止错误:
from django.http import HttpResponseBadRequest
try:
...
except MyUser.DoesNotExist:
return HttpResponseBadRequest("Invalid token")
关于python - 查看 UrlGatewayLogin 未返回 HttpResponse 对象。它返回 None 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624253/