Djiango ajax請求數據/分頁器


一、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM