1. 用getJSON動態加載數據:html
$getJSON("{%url '{watch_information}'%}",{'data':data,},function(ret){ //do something
})
第一個參數爲處理請求的連接,第二個參數爲連同請求發送到後端的數據,第三個參數是返回後調用的函數,在函數體內能夠對返回數據 ret
進行各類操做。前端
後端視圖函數:django
from django.http import JsonResponse def watch_information(request): data=request.GET.get('data') #dosomething return JsonResponse(data)
若是直接返回QuerySet,則須要將其序列化:json
data = serializer.serialize("json", somemodel.objects.all()) return JsonResponse(data)
而後再在前端反序列化:後端
$getJSON("{%url '{watch_information}'%}",{'data':data,},function(ret){ $each(JSON.parse(ret),function(i,item){ //JSON.parse將json字符串轉化成JavaScript對象 // i是索引,item是列表中的每一個元素 //dosomething }) })
2. 用表單提交數據到後臺。以登陸表單爲例:cookie
<form class="form-signin my-md-4" action="/home/" method="POST"> {% csrf_token %} <h2 class="h2 mb-4 font-weight-normal">Please sign in</h2> {% if message %} <div class="alert alert-warning">{{ message }}</div> {% endif %} <div class="form-group"> <label for="inputUsername" class="sr-only">User name</label> <input name='username' type="text" id="inputUsername" class="form-control" placeholder="User name" required autofocus> </div> <br/> <div class="form-group"> <label for="inputPassword" class="sr-only">Password</label> <input name='password' type="password" id="inputPassword" class="form-control" placeholder="Password" required> </div> <button class="btn btn-lg btn-secondary btn-block" type="submit">Log in </button>
</form>
django提供了一種機制防止跨站點請求僞造(CSRF),當訪問頁面時,會隨機生成一個token,存放在cookie中,並保存到session;當提交表單時會附帶一個token,session
後端比對這個token與session中是否一致。所以在每一個表單開始處都要加上{%csrf_token%} 自動生成token。。若是要強行取消csrf機制,則在視圖函數前加上 @csrf_exempt.函數
後端代碼:ui
def home(request): if request.session.get('is_login',None): #判斷用戶是否已登陸 return redirect('../recent') if request.method=='POST': username=request.POST.get('username') #按「name」屬性獲取表單數據 password=request.POST.get('password') try: user=models.User.objects.get(username=username) if user.password==password: #保存用戶信息 request.session['is_login'] = True request.session['user_id'] = user.id request.session['user_name'] = user.username return redirect('../recent') else: message='密碼錯誤' return render(request,'hello/home.html',{"message":message}) except: message='用戶不存在 註冊新用戶?' return render(request,'hello/home.html',{"message":message}) return render(request,"hello/home.html")