2

我有一种方法可以获取格式为 json 格式的 POST 数据,如下所示

[{"UserName": "alexgv", "Password": "secretpassword"}]

这是方法

def Login(request, *args):
    data = request.DATA
    return Response(data)
"""
try:
    m = User.objects.get(UserName=request.DATA['UserName'])
    if m.password == request.DATA['Password']:
        request.session['member_id'] = m.id
        return HttpResponse("Testing")
except User.DoesNotExist:
    return HttpResponse("Your username and password didn't match.")
""" 

我希望能够从该 json POST 中仅获取一个变量。例如,也许我只想获取用户名或密码。我该怎么做?我尝试了很多方法,但似乎无法让它工作,我不想使用 request.POST.get 因为那意味着我必须发送 POST 变量。顺便说一句,我正在使用这个http://django-rest-framework.org/。我已通读文档,但似乎无法在其中找到任何内容。任何帮助表示赞赏。它现在返回的就是一切。

4

1 回答 1

3

像这样...

username = request.DATA['UserName']

顺便说一句,您可能不应该自己编写基于会话的 API 登录视图,因为这很容易出错。

对于提供 AJAX 风格功能的 API,您有两个不错的选择:

  • 使用标准 Django 登录,由用户执行,而不是由 API 客户端执行。
  • 使用基于凭据的身份验证方案,而不是基于会话,并使用 AJAX 执行登录。例如 Djoser 第三方包是一个很棒的库,包括基于令牌的登录和其他类似的视图...... https://github.com/sunscrapers/djoser

更新还发现了https://github.com/JamesRitchie/django-rest-framework-sav这可能值得一看基于 AJAX 会话的身份验证。

于 2013-04-18T09:11:39.693 回答