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から変数を1つだけ取得できるようにしたい。たとえば、ユーザー名またはパスワードを取得したいだけかもしれません。どうすればいいですか?私はさまざまなことを試しましたが、うまくいかないようです。request.POST.get を使用したくありません。これは、POST 変数を送信する必要があることを意味するためです。ところで、私はこのhttp://django-rest-framework.org/を使用しています。私はドキュメントを読みましたが、そこには何も見つからないようです。どんな助けでも大歓迎です。それが今返すものがすべてです。

4

1 に答える 1

3

そのようです...

username = request.DATA['UserName']

ちなみに、間違いを犯しやすいので、セッション ベースの API ログイン ビューを自分で作成するべきではありません。

AJAX スタイルの機能を提供する API には、次の 2 つの適切なオプションがあります。

  • API クライアントではなく、ユーザーによって実行される標準の Django ログインを使用してログインします。
  • セッションベースではなく資格情報ベースの認証スキームを使用し、AJAX を使用してログインを実行します。たとえば、Djoser サード パーティ パッケージは、トークン ベースのログインやその他の同様のビューを含む優れたライブラリです... https://github.com/sunscrapers/djoser

更新また、AJAX セッション ベースの認証を検討する価値があるかもしれないhttps://github.com/JamesRitchie/django-rest-framework-savも発見しました。

于 2013-04-18T09:11:39.693 に答える