Skip to main content
 首页 » 编程设计

python之Django 休息框架

2024年08月29日29开发

我有一个方法可以像这样获取以 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/ .我已通读文档,但似乎无法在其中找到任何内容。任何帮助表示赞赏。它现在返回的是一切。

请您参考如下方法:

像这样...

username = request.DATA['UserName'] 

顺便说一下,您可能不应该自己编写基于 session 的 API 登录 View ,因为它很容易出错。

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

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

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