登录接口
# django lib
from django.views.generic import View
from django.shortcuts import HttpResponse
from django.contrib import auth
from braces.views import JSONRequestResponseMixin
# local lib
from checkparams import CheckParams
from response import Response
import local_settings as lset
class LoginView(JSONRequestResponseMixin, View, CheckParams, Response):
""" 登录视图 """
@staticmethod
def get_user_level(user):
""" 获得用户的权限等级 """
if user.is_superuser:
level =3
elif user.is_staff:
level =2
else:
level =1
return level
def post(self, request):
""" 需要用到request_json,因为传进来的json格式的数据,而不是form表单,使用request.POST获取不到参数 """
standard_list = ["username", "password"]
params_dict =self.request_json
dest_list = params_dict.keys()
res =self.check_params(standard_list, dest_list)
if not res:
return HttpResponse(self.error(lset.PARAMS_NOT_RIGHT, lset.PARAMS_NOT_RIGHT_MSG))
username = params_dict.get("username", "").strip()
password = params_dict.get("password", "").strip()
user = auth.authenticate(username=username, password=password)
if useris not None:
auth.login(request, user)
session_key = request.session.session_key
request.session[session_key] = username
email = user.email
name = user.last_name + user.first_name
if not name:
name = user.username
level =self.get_user_level(user)
data = {"__token__": request.session.session_key, "name": name, "level": level, "email": email}
return HttpResponse(self.success(data))
else:
return HttpResponse(self.error(lset.USER_PASS_NOT_MATCH, lset.USER_PASS_NOT_MATCH_MSG))
其中checkparams,response, local_settings 都是自己写的模块