如何实现Django框架中的高效分页功能?

2026-05-28 17:001阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计891个文字,预计阅读时间需要4分钟。

如何实现Django框架中的高效分页功能?

以下是对您提供的文本进行简化和改写的版本,确保不包含重复内容,并控制字数在100字以内:

GitHub: [huningfei](https://github.com/huningfei?tab=repositories) | 博客: [huningfei](https://www.cnblogs.com/huningfei/p/10716916.) | HTML表格:使用``,`名称操作`,``循环显示数据。

​​github.com/huningfei?tab=repositories​​

​​www.cnblogs.com/huningfei/p/10716916.html​​

<table border="1px">

<thead>

<tr>

<th>ID</th>

<th>名称</th>

<th>操作</th>

</tr>

</thead>

<tbody>

{% for cls in paginator_data.object_list %}

<tr>

<td>{{ cls.id }}</td>

<td>{{ cls.title }}</td>

如何实现Django框架中的高效分页功能?

<td>

<button id="btn_delete" type="submit" name="btn_delete" value="{{ cls.id }}">删除</button>

<!--<button id="btn_add" type="submit" name="btn_add" value="{{ cls.id }}">删除</button> -->

</td>

</tr>

{% endfor %}

</tbody>

</table>

<div class="yahoo2" style="margin-left:1%">

{% if paginator_data.has_previous %}

<a class='paginator' href='?page={{ paginator_data.previous_page_number }}&search={{search}}'><span>上一页</span></a>

{% endif %}

{% for page in paginator_data.paginator.page_range %}

{% if paginator_data.number == page %}

<span id="currentpage">{{ page }}</span>

{% else %}

<a class='paginator' href='?page={{ page }}&search={{search}}' title='{{ page }}'><span>{{ page }}</span></a>

{% endif %}

{% endfor %}

{% if paginator_data.has_next %}

<a class='paginator' href='?page={{ paginator_data.next_page_number }}&search={{search}}'><span>下一页</span></a>

{% endif %}

</div>

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">

新增

</button>

<inclue src="modal_classes.html"></inclue>

<!-- 模态框(Modal) -->

{% include 'modal_classes.html' %}

<script>

$('#btn_delete').click(function () {

id = $('#btn_delete').val();

alert(id)

url = '/del_classes/'+ id

type = 'DELETE'

data = {}

$.ajax({

type: type,

url: url,

data: data,

dataType: "json",

success: function(data){

//逻辑

console.log(data)

location.reload()

},

error: function(){

//显示错误信息

},

})

})

$('#btn_add').click(function () {

var title = $('#class_name').val()

var data = {title:title}

type = 'POST' // GET,POST,DELETE,PUT, ...

url = '/del_classes/'

$.ajax({

type: type,

url: url,

data: data,

dataType: "json",

success: function(result){

//逻辑

console.log(result)

status = result.status

if (status == 1){

location.reload()

} else if (status == 0){

alert('重复创建')

}

},

error: function(){

//显示错误信息

},

})

})

</script>

</body>





class del_classes(ListView):
model = Classes
paginate_by = 10 template_name= 'get_classes.html' def delete(self,request,*args,**kwargs):
print(kwargs)
pk = kwargs.get('pk')
print(pk)
Classes.objects.filter(id=pk).delete()
return JsonResponse({'status':1})
def post(self,request,*args,**kwargs):
data = QueryDict(request.body).dict()
print(data)
Classes.objects.create(**data)
print(data)
return JsonResponse({'status': 1})

def handle_page(self, page, object_list):
paginator = Paginator(object_list, self.paginate_by, 1)
try:
paginator_data = paginator.page(page)
except PageNotAnInteger:
paginator_data = paginator.page(1)
except EmptyPage:
paginator_data = paginator.page(paginator.num_pages)
return paginator_data

def get(self, request, *args, **kwargs):
pk = kwargs.get('pk')
if pk:
try:
instance = self.model.objects.get(pk=pk)
return render(request, 'get_classes.html', {'cls': instance})
#return render(request, self.template_detail, instance.to_dict) except self.model.DoesNotExist:
return JsonResponse({'data':'id {} not exits'.format(pk)})
object_list = self.get_queryset()
page = request.GET.get('page',1)
paginator_data = self.handle_page(page, object_list)
search = request.GET.get('search', '')
return render(request, self.template_name, {'paginator_data': paginator_data, 'search': search})








本文共计891个文字,预计阅读时间需要4分钟。

如何实现Django框架中的高效分页功能?

以下是对您提供的文本进行简化和改写的版本,确保不包含重复内容,并控制字数在100字以内:

GitHub: [huningfei](https://github.com/huningfei?tab=repositories) | 博客: [huningfei](https://www.cnblogs.com/huningfei/p/10716916.) | HTML表格:使用``,`名称操作`,``循环显示数据。

​​github.com/huningfei?tab=repositories​​

​​www.cnblogs.com/huningfei/p/10716916.html​​

<table border="1px">

<thead>

<tr>

<th>ID</th>

<th>名称</th>

<th>操作</th>

</tr>

</thead>

<tbody>

{% for cls in paginator_data.object_list %}

<tr>

<td>{{ cls.id }}</td>

<td>{{ cls.title }}</td>

如何实现Django框架中的高效分页功能?

<td>

<button id="btn_delete" type="submit" name="btn_delete" value="{{ cls.id }}">删除</button>

<!--<button id="btn_add" type="submit" name="btn_add" value="{{ cls.id }}">删除</button> -->

</td>

</tr>

{% endfor %}

</tbody>

</table>

<div class="yahoo2" style="margin-left:1%">

{% if paginator_data.has_previous %}

<a class='paginator' href='?page={{ paginator_data.previous_page_number }}&search={{search}}'><span>上一页</span></a>

{% endif %}

{% for page in paginator_data.paginator.page_range %}

{% if paginator_data.number == page %}

<span id="currentpage">{{ page }}</span>

{% else %}

<a class='paginator' href='?page={{ page }}&search={{search}}' title='{{ page }}'><span>{{ page }}</span></a>

{% endif %}

{% endfor %}

{% if paginator_data.has_next %}

<a class='paginator' href='?page={{ paginator_data.next_page_number }}&search={{search}}'><span>下一页</span></a>

{% endif %}

</div>

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">

新增

</button>

<inclue src="modal_classes.html"></inclue>

<!-- 模态框(Modal) -->

{% include 'modal_classes.html' %}

<script>

$('#btn_delete').click(function () {

id = $('#btn_delete').val();

alert(id)

url = '/del_classes/'+ id

type = 'DELETE'

data = {}

$.ajax({

type: type,

url: url,

data: data,

dataType: "json",

success: function(data){

//逻辑

console.log(data)

location.reload()

},

error: function(){

//显示错误信息

},

})

})

$('#btn_add').click(function () {

var title = $('#class_name').val()

var data = {title:title}

type = 'POST' // GET,POST,DELETE,PUT, ...

url = '/del_classes/'

$.ajax({

type: type,

url: url,

data: data,

dataType: "json",

success: function(result){

//逻辑

console.log(result)

status = result.status

if (status == 1){

location.reload()

} else if (status == 0){

alert('重复创建')

}

},

error: function(){

//显示错误信息

},

})

})

</script>

</body>





class del_classes(ListView):
model = Classes
paginate_by = 10 template_name= 'get_classes.html' def delete(self,request,*args,**kwargs):
print(kwargs)
pk = kwargs.get('pk')
print(pk)
Classes.objects.filter(id=pk).delete()
return JsonResponse({'status':1})
def post(self,request,*args,**kwargs):
data = QueryDict(request.body).dict()
print(data)
Classes.objects.create(**data)
print(data)
return JsonResponse({'status': 1})

def handle_page(self, page, object_list):
paginator = Paginator(object_list, self.paginate_by, 1)
try:
paginator_data = paginator.page(page)
except PageNotAnInteger:
paginator_data = paginator.page(1)
except EmptyPage:
paginator_data = paginator.page(paginator.num_pages)
return paginator_data

def get(self, request, *args, **kwargs):
pk = kwargs.get('pk')
if pk:
try:
instance = self.model.objects.get(pk=pk)
return render(request, 'get_classes.html', {'cls': instance})
#return render(request, self.template_detail, instance.to_dict) except self.model.DoesNotExist:
return JsonResponse({'data':'id {} not exits'.format(pk)})
object_list = self.get_queryset()
page = request.GET.get('page',1)
paginator_data = self.handle_page(page, object_list)
search = request.GET.get('search', '')
return render(request, self.template_name, {'paginator_data': paginator_data, 'search': search})