处理两种的方式 前后端数据交互格式---urlencode——JSON(application/json)


实现方式:加装器

def outer(func):
    '''
    只能用来装饰视图函数
    :param func:
    :return:
    '''

    def inner(request, *args, **kwargs):
        # args[0].POST=json.loads(args[0].body)
        # 是为了防止报错,主要是处理urlencode这种编码,这种编码应该不处理
        try:
            # name=lqz&pwd=123
            request.POST = json.loads(request.body)
        except Exception as e:
            print(e)
        ret = func(request, *args, **kwargs)
        return ret

    return inner


@outer
def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    if request.is_ajax():
        print(request.body)
        print(request.POST)
        # loads可以直接传二进制
        # request_dic=json.loads(request.body)
        # request.POST=request_dic
        # print(type(request_dic))

        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        print(name)
        print(pwd)

        return HttpResponse('ok')

 

实现简单的数据登陆验证:

def outer(func):
    """
    只能处理前端传来数据的格式的装饰器
    :param func:
    :return:
    """
    def inter(*args,**kwargs):
        #func的参数会自动按相关属性传到*args,**kwargs
        print(args[0].body)
        try:
            #处理前端contentType:"appliction/json",格式的数据
            args[0].POST=json.loads(args[0].body)
        except Exception as e:
            print(e)
        res = func(*args, **kwargs)

        return res
    return inter

@outer
def haha(request):
    if request.method == "GET":
        return render(request, "login.html")
    else:
        data = {"signal": 100}
        msg = models.User.objects.all()
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        for into in msg:

            if user == into.name and int(pwd) == into.pwd:
                data["msg"] = "登陆成功"
                print(data)
                return JsonResponse(data)
        data["msg"] = "用户名或密码错误"
        print(data)
        return JsonResponse(data)

前端代码(ajax):
  
  <p>用户名:<input type="text" id="user"></p>
  <p>密码:<input type="password" id="pwd"></p>
  <p><input type="button" id="button" value="提交"></p>


$("#button").click(function () {

var user = $("#user").val()
var pwd = $("#pwd").val()
dic = {"user":user,"pwd":pwd}
$.ajax({
url:"login3",
type:"post",
contentType:"appliction/json",
data: JSON.stringify(dic),
{#data: "123",#}
success:function (data) {
console.log(typeof data)

data = JSON.parse(data)

console.log(typeof data)

if(data.signal==100){
$("#text").text(data.msg)
}else{
$("#text").text(data.msg)
}
}

})
})

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM