1

どこから始めればよいかわからない非常に漠然とした質問があります。

Python を使用して ajax ログインを行う必要があります (django REST 呼び出し)

jQueryは私の側から入手できます。

私はこれを与えられました:

    import sys, base64
    import httplib, urllib, urlparse, json
    auth = 'Basic %s' % base64.encodestring('%s:%s' % (username, password)).strip()
    headers = {'Content-Type':'application/x-www-form-urlencoded', 'Authorization':auth}
    endpoint = "urlendpoint.com"
    url = "/login/"
    conn = httplib.HTTPSConnection(endpoint)
    conn.request("POST", url, "", headers)
    response = conn.getresponse()
    if response.status != httplib.OK: raise Exception("%s %s" % (response.status, response.reason))
    result = json.load(response)
    if "token" not in result: raise Exception("Unable to acquire token.")
    if "sessionid" not in result: raise Exception("Unable to acquire session ID.")
    print result["token"], result["sessionid"]
    conn.close()

POST 経由でログインを送信してから、Cookie を設定する必要があります。

このタスクをどこから始めればよいかまったくわかりません。コマンド ラインを使用して、/login.py ファイルをセットアップし、上記の変数フィールドと VIOLA にハードコードされたユーザー名とパスワードを使用してこのファイルにアクセスできます。問題なく動作します。ただし、このタスクに ajax をどこから使用すればよいかわかりません。

ここでの主なことは、REST (json) エンドポイントにアクセスして (Ajax 経由で) データの追加を開始できるようにするために、ログインしたユーザーとサーバーの間でセッション ID を確立する必要があることです。 )。

どんな援助でも大歓迎です。

私は誰かが

4

1 に答える 1

6

通常のビューで行う方法とAJAXビューで行う方法に機能的な違いはありません。唯一の違いは、送信する応答です。

from django.contrib.auth import authenticate, login
from django.http import HttpResponse, HttpResponseBadRequest
from django.utils import simplejson

def ajax_login(request):
    if request.method == 'POST':
        username = request.POST.get('username', '').strip()
        password = request.POST.get('password', '').strip()
        if username and password:
            # Test username/password combination
            user = authenticate(username=username, password=password)
            # Found a match
            if user is not None:
                # User is active
                if user.is_active:
                    # Officially log the user in
                    login(self.request, user)
                    data = {'success': True}
                else:
                    data = {'success': False, 'error': 'User is not active'}
            else:
                data = {'success': False, 'error': 'Wrong username and/or password'}

            return HttpResponse(simplejson.dumps(data), mimetype='application/json')

    # Request method is not POST or one of username or password is missing
    return HttpResponseBadRequest()        
于 2012-08-09T21:42:28.770 に答える