python - 查看 UrlGatewayLogin 未返回 HttpResponse 对象。它返回 None 相反

标签 python django django-urls

这个错误有点重复,随处可见,但我对发生的事情有点困惑。

我正在尝试在 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/

相关文章:

python - celery .delay 挂起(最近,不是授权问题)

python - Django session 管理

python - Django 或类似的复合主键

python - 在 Django 中通过 URL 传递静态字符串参数(模型选择)?

python - 将 numpy 列表转换为列向量

python - 识别十进制数的正则表达式是什么

django - 如何在 django-allauth 上自定义 activate_url ?

python - 在子目录中运行 Django 或说 suburl 时出现 url 问题

python - 纯 Tensorflow 中的 Gram-Schmidt 正交化 : performance for iterative solution is much slower than numpy

python - 有效地搜索一对有噪声的有序列表