使用 json 在 python / django 中设置用户登录,但不知道从哪里开始

Posted

技术标签:

【中文标题】使用 json 在 python / django 中设置用户登录,但不知道从哪里开始【英文标题】:setting up a user login in python / django using json and have no idea where to start 【发布时间】:2012-08-07 03:29:10 【问题描述】:

我有一个非常模糊的问题,我不知道从哪里开始。

我需要使用 python(django REST 调用)进行 ajax 登录

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 来完成这项任务。

这里的主要内容是,一旦用户登录,我需要在登录用户和服务器之间建立会话 ID,以便访问 REST (json) 端点,以便我可以开始添加数据(通过 Ajax)。

任何帮助将不胜感激。

我希望有人

【问题讨论】:

需要写前端还是后端?如果您只想要一些用 Python 编写的用户身份验证系统;然后使用Flask,这将更容易上手。你需要提出一个具体的问题。 我可以写 html 直到我脸色发青——我只是不知道我应该用上面的代码做什么来建立一个 sessionID 或者用上面打印的“令牌”做什么。当我从命令行使用上述代码时,我可以成功登录。但是,这对我没有好处,因为我需要从网络浏览器中进行。后端存在。我会研究一下 Flask,看看它能提供什么。 **编辑 - 用户授权系统在 Django 中。那部分效果很好。我需要通过网络浏览器通过 https:// 建立连接。 我认为this question 是你想要的。 我会看一看。我认为我的第一步是首先使用纯 jane html 建立连接。然后将其移至 ajax。如果我找到它们,我会发布我的答案:-/ 【参考方案1】:

常规视图的实现方式与 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()        

【讨论】:

以上是关于使用 json 在 python / django 中设置用户登录,但不知道从哪里开始的主要内容,如果未能解决你的问题,请参考以下文章

Django中使用Json返回数据

使用 json 在 python / django 中设置用户登录,但不知道从哪里开始

在 django 模板 [python] 中使用 json.dump 或 pprint 逐行创建一个表

MySQL、JSON、Python、Django - 完全错误

将 python/django 变量作为 JSON 传递给 javascript?

Django:IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录