博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax及分页器
阅读量:5827 次
发布时间:2019-06-18

本文共 3773 字,大约阅读时间需要 12 分钟。

前台:

$('.btn').click(function(){

  $.ajax({

    url:'/ajaxload/'   

    type: 'get|post',

data: {

usr: 'abc',
pwd: '123',
},
success: function(data) {
// data为string类型数据
},
error: function(e) {
// 请求失败分支
}
})
})

后台:

def ajax_load(request):

if request.is_ajax():
if request.method == 'GET':
usr = request.GET.get('usr', None)
pwd = request.GET.get('pwd', None)
if request.method == 'POST':
usr = request.POST.get('usr', None)
pwd = request.POST.get('pwd', None)
return HttpResponse('OK')

## ajax - json数据响应

前台

```js

$.ajax({
...,
dataType: 'json', // 如果用HttpResponse返回数据可能出现请求失败
data: {
usr: 'abc',
pwd: '123',
},
success: function(data) {
// data为object类型
}
})

后台

```python

# HttpResponse返回json类型数据 (不建议)
import json
json_data = json.dumps({'msg': 'OK'}, ensure_ascii=False)
return HttpResponse(json_data, content_type='application/json')

from django.http import JsonResponse

# JsonResponse返回json类型数据 (建议)
data = {'msg': 'OK'}
return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})

## ajax - json数据请求(了解)

前台

```js

$.ajax({
...,
// 按json格式提交json字符串数据
contentType: 'application/json',
// 将json数据格式化为字符串
data: JSON.stringify({usr: 'abc', pwd: '123'}),
success: function(data) {
}
})
```

后台

```python

# 后台的数据,在request对象的body中不再被主动解析到GET|POST中
import json
# 手动解析json字符串,转化字典并替代request.POST对象,就可以继续用request.POST获取数据
json_dic = json.loads(request.body)
request.POST = json_dic
...

# 可以封装成装饰器

## Django分页模块

```python

from django.core.paginator import Paginator

# 分页对象列表

book_list = Book.objects.all()
# 分页对象
paginator = Paginator(book_list, 6) # 分页对象列表,每一页对象(最大)数
# 对象总个数
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()
```

 

 

## 批量插入数据

```python

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)
```

 

 

## 分页器代码

前台

```html

<nav aria-label="Page navigation">
<ul class="pagination">
<li>
{% if current_page.has_previous %}
<a href="/book/?page={
{ current_num|add:-1 }}" aria-label="Previous">
{% else %}
<a href="javascript:void(0)" aria-label="Previous">
{% endif %}
<span aria-hidden="true">&laquo;</span>
</a>
</li>
{% if current_num == 1 %}
<li class="active">
{% else %}
<li>
{% endif %}
<a href="/book/?page=1">1</a></li>
<li><a href="javascript:void(0)">...</a></li>
{% for num in page_range %}
{% if current_num == num %}
<li class="active">
{% else %}
<li>
{% endif %}
<a href="/book/?page={
{ num }}">{
{ num }}</a></li>
{% endfor %}
<li><a href="javascript:void(0)">...</a></li>

{% if current_num == num_pages %}

<li class="active">
{% else %}
<li>
{% endif %}
<a href="/book/?page={
{ num_pages }}">{
{ num_pages }}</a></li>

<li>

{% if current_page.has_next %}
<a href="/book/?page={
{ current_num|add:1 }}" aria-label="Next">
{% else %}
<a href="javascript:void(0)" aria-label="Next">
{% endif %}

<span aria-hidden="true">&raquo;</span>

</a>
</li>
</ul>
</nav>
```

后台

```python

def show_book(request):
title = '图书详情'
header = "图书管理系统"
current_num = int(request.GET.get('page', 1))
book_list = Book.objects.all()
paginator = Paginator(book_list, 6)
num_pages = paginator.num_pages
if num_pages > 5:
if current_num < 4:
page_range = range(2, 5)
elif current_num > paginator.num_pages - 3:
page_range = range(num_pages - 3, num_pages)
else:
page_range = range(current_num - 1, current_num + 2)
else:
page_range = paginator.paginator
current_page = paginator.page(current_num)

return render(request, 'book.html', locals())

转载于:https://www.cnblogs.com/suncunxu/p/10511716.html

你可能感兴趣的文章
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>