一、ajax請求數據
1、ajax模板
$.ajax({ url: '/ajax/', # 請求路徑 type: 'post', # 請求方式 data: { # get和post都以data字典方式攜帶數據 usr: $('.usr').val(), # 獲取輸入框內容 pwd: $('.pwd').val(), # jquery對象是包含js對象的數組,可以通過.get(0)來獲取js對象 }, success: function (data) { console.log(typeof(data), data); # 得到后台返回的數據(普通字符串 | json類型數據) } })
2、后端返回ajax數據的三種方式
# ajax請求,后台只需要返回信息,所以不會出現render、redirect def ajax(request): print(request.is_ajax()) # 是否是ajax請求 if request.method == 'GET': # 獲取get請求數據 usr = request.GET.get('usr', None) pwd = request.GET.get('pwd', None) if request.method == 'POST': # 獲取post請求數據 usr = request.POST.get('usr', None) pwd = request.POST.get('pwd', None) #1、 返回字符串類型數據 # return HttpResponse('OK') # *** #2、 返回json類型數據 dic = {'status': 'ok', 'msg': '登錄成功'} data = json.dumps(dic, ensure_ascii=False) # 直接返回json模塊處理后的json數據(json字符串),前台接收到的是一個json類型的字符串,需要前台自己處理 # return HttpResponse(data) # 返回json字符串是,還告訴前台,該數據就是json類型字符串,設置響應頭 return HttpResponse(data, content_type='application/json') # **** from django.http import JsonResponse # 3、返回json類型數據的終極方法 dic = {'status': 'ok', 'msg': '登錄成功'} return JsonResponse(dic, safe=False, json_dumps_params={'ensure_ascii': False}) # ***** # 參數含義: # 返回值保證是字典類型 # safe在False情況下就支持返回列表或字符串 # 取消json的dumps方法采用的默認ascii編碼中文
二、分頁器
分頁器對象的基本屬性
from django.core.paginator import Paginator # 分頁對象列表 book_list = Book.objects.all() # 所有書的對象 # 分頁對象 paginator = Paginator(book_list, 6) # 分頁對象列表,每一頁對象(最大)數(6)
current_page = paginator.page(current_num) # current_num為當前頁面 current_page為當前頁面下的所有對象(即本頁所需要展示的數據)
# 對象總個數 count = paginator.count # 總分頁數 num_pages = paginator.num_pages # 頁碼列表(可迭代對象) # 各頁中所需要顯示的對象 page_range = paginator.page_range # 某一具體頁 page = paginator.page(3) # 具體第幾頁 # 是否有上一頁 page.has_previous() # 上一頁編碼 page.previous_page_number() # 是否有下一頁 page.has_next() # 下一頁編碼 page.next_page_number()
三、數據庫的批量插入
book_list = [] for i in range(100): book = Book(name='book%s' % i, price=11.11, publish_date='2018-1-1', publish_id=1) book_list.append(book) # 操作對象列表,一次操作多少條數據 Book.objects.bulk_create(book_list, 20) # 插入100條數據只需要執行5次sql