【问题标题】:Django username is empty in a GET requestDjango 用户名在 GET 请求中为空
【发布时间】:2020-07-13 15:26:23
【问题描述】:

在我的 views.py 中,我有一个使用 GET 方法的函数,如下所示。

def status_codes(request):
try:
    url = request.GET.get('url')
    urls = linksextraction(url)
    url_codes.objects.filter().delete()
    print(request.user.username) # prints empty string
    # do something
    return JsonResponse(url_final_data)
except Exception:
    return JsonResponse({"message": "Invalid url"})

当我尝试打印当前登录的用户时,它会打印一个空字符串。我在其他使用 POST 的函数中也使用了相同的方法,它在那里工作正常。

在涉及 GET 方法的情况下,有人可以帮我获取用户名吗?

【问题讨论】:

    标签: python django http authentication


    【解决方案1】:

    您确定用户已通过身份验证吗?根据Anonymous User doc 的说法,空的用户名通常表明没有人通过身份验证。

    如果您的回复是JsonResponse,是否意味着您正在使用某种 Ajax 来调用它?在这种情况下,默认情况下不会转发凭据。比如it can be done with fetch是这样的

    【讨论】:

    • request.user.is_authenticated 使用 GET 方法时为 false,使用 POST 方法时为 True。请帮忙
    • 这个网址怎么称呼?这是浏览器中的链接吗?还是你用javascript来调用它?
    • 不使用js,它是在浏览器中触发的端点。是的,我的管理页面正在运行
    • 你能告诉我你的 settings.py 吗? AUTH_USER、SESSION的设置……
    • AUTHENTICATION_BACKENDS = ('social_core.backends.open_id.OpenIdAuth', 'social_core.backends.google.GoogleOpenId', 'social_core.backends.google.GoogleOAuth2', 'django.contrib.auth.backends.模型后端', )
    【解决方案2】:

    请检查用户是否登录。

    print(request.user)
    

    【讨论】:

    • 其打印“AnonymousUser”
    【解决方案3】:

    我没有得到用户名的原因是因为我忘记将登录装饰器放在我的函数顶部

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2011-03-30
      • 2017-05-12
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多