處理兩種的方式 前后端數據交互格式---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