Django,ajax实现表格增删查改,Django内置分页功能。

1.工程目录

2.urls.py

"""Django_ajax URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('students/', views.students),path('add_student/', views.add_student),path('del_student/', views.del_student),path('edit_student/', views.edit_student),path('edit_student/', views.edit_student),]

3.views.py

from django.shortcuts import render, HttpResponse, redirect
from app01 import models
import json
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger# Create your views here.class CustomPaginator(Paginator):def __init__(self, current_page, show_page_num, *args, **kwargs):self.current_page = current_pageself.show_page_num = show_page_numsuper(CustomPaginator, self).__init__(*args, **kwargs)print('current_page:', current_page)print('show_page_num:', show_page_num)def pager_num_range(self):if self.current_page-self.show_page_num > 0 and self.current_page+self.show_page_num <= self.num_pages:limit_left = int(self.current_page-self.show_page_num/2)limit_right = int(self.current_page + self.show_page_num/2+1)elif self.current_page-self.show_page_num <= 0:limit_left = 1limit_right = 1 + self.show_page_num+1elif self.current_page+self.show_page_num > self.num_pages:limit_right = self.num_pages+1limit_left = self.num_pages-self.show_page_numreturn range(limit_left, limit_right)def students(request):current_page = request.GET.get('p')num_A_page = request.GET.get('n')show_page_num = 10if num_A_page == None:num_A_page = 10paginator = CustomPaginator(int(current_page), show_page_num, models.Student.objects.all(), num_A_page)try:posts = paginator.page(current_page)except PageNotAnInteger:posts = paginator.page(1)except EmptyPage:posts = paginator.page(paginator.num_pages)cls_list = models.Classes.objects.all()return render(request, 'students.html', {'posts': posts, 'cls_list': cls_list})def add_student(request):print(request.POST)response = {'status': True, 'message': None, 'data': None}try:u = request.POST.get('stu_username')a = request.POST.get('stu_age')g = request.POST.get('gender')c = request.POST.get('cls_id')print('-------------', u, a, g, c)obj = models.Student.objects.create(username=u, age=a, gender=g, cs_id=c)response['data'] = obj.idexcept Exception as e:response['status'] = Falseresponse['message'] = '用户输入错误!'result = json.dumps(response, ensure_ascii=False)return HttpResponse(result)def del_student(request):response = {'status': True, 'message': None, 'data': None}nid = request.GET.get('nid')models.Student.objects.filter(id=nid).delete()result = json.dumps(response, ensure_ascii=False)return HttpResponse(result)def edit_student(request):print(request.POST)response = {'status': True, 'message': None, 'code': 1000}try:nid = request.POST.get('nid')u = request.POST.get('user')a = request.POST.get('age')g = request.POST.get('gender')c = request.POST.get('edit_cls_id')print('-------------', u, a, g, c)models.Student.objects.filter(id=nid).update(username=u, age=a, gender=g, cs_id=c)except Exception as e:response['status'] = Falseresponse['code'] = 1001response['message'] = '用户输入错误!'import jsonresult = json.dumps(response, ensure_ascii=False)return HttpResponse(result)

4.models.py

from django.db import models# Create your models here.class Classes(models.Model):title = models.CharField(max_length=32)m = models.ManyToManyField('Teachers')class Teachers(models.Model):name = models.CharField(max_length=32)class Student(models.Model):username = models.CharField(max_length=32)age = models.IntegerField()gender = models.BooleanField()cs = models.ForeignKey(Classes, on_delete=models.CASCADE)

5.在static文件夹中加入jquery-3.3.1.js、创建plugins文件夹,在该文件夹下加入要使用是前端框架。

链接:https://pan.baidu.com/s/1PrYlNmW3FyOlvkQhb7KYiQ
提取码:1cc9
6.生成数据库中的表

在pycharm中的Terminal中输入:

python manage.py makemigrationspython manage.py migrate

7.运行服务器:

 

在pycharm中的Terminal中输入:

python manage.py runserver 8081

运行成功

8.访问效果:

 

转载于:https://www.cnblogs.com/CK85/p/10233083.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端登录逻辑

话不多说直接上图片&#xff0c;纯手工打造

使用CEfSharp之旅(8)CEFSharp 使用代理 更换位置IP

直接上代码&#xff1a; var settings new CefSettings(); settings.CachePath "cache"; settings.CefCommandLineArgs.Add("proxy-server", ProxyAddress); Cef.Initialize(settings);出处&#xff1a;https://blog.csdn.net/u010919083/article/detail…

新入驻博客园立一个flag

2019年博客12 * 2篇转载于:https://www.cnblogs.com/chenzy87/p/10233209.html

echarts 多次通过setOption改变图形数据时 数据有时不进行变化

需求&#xff1a;通过切换xyz三个选项&#xff0c;进行切换统计图中的折线条数 当前数据为正确&#xff0c;页面加载默认选中x轴&#xff0c;当选中xy后也没有问题 当我取消y轴时 发现图表并没有进行变化 但是option中的数据确实已经刷新了&#xff0c;猜测是在setOption时候…

2019春总结作业

2019春总结作业 一丶我学到的内容 &#xff08;整理本课程所学&#xff0c;用思维导图的方式,思维导图的工具可以使用&#xff1a;XMind&#xff09; 二丶我的收获&#xff08;包括我完成的所有作业的链接收获&#xff09; 在这个星期里&#xff0c;我们专业的学生在专业老师的…

【数据结构入门精讲 | 第十七篇】一文讲清图及各类图算法

在上一篇中我们进行了的并查集相关练习&#xff0c;在这一篇中我们将学习图的知识点。 目录 概念深度优先DFS伪代码 广度优先BFS伪代码 最短路径算法&#xff08;Dijkstra&#xff09;伪代码 Floyd算法拓扑排序逆拓扑排序 概念 下面介绍几种在对图操作时常用的算法。 深度优先D…

腾讯地图调用获取经度纬度代码

腾讯地图调用获取经度纬度代码 //腾讯地图拼接好的数据返回经度和纬度 function getPositionInfo($address) { header("Content-type:text/html;charsetutf-8");//你腾讯地图的k值$ak KDSDS-47CDS-G3NU5-DB3TB-21212-5UBD7;$url "http://apis.map.qq.c…

安装一个插件、回馈给你一款属于猿的绚丽浏览器

不知道大家有没有了解&#xff0c;由CSDN推出的一款CSDN浏览器助手&#xff0c;其实哈就我个人而言对一些助手、插件还是很有兴趣的&#xff0c;毕竟他能够让我们快速高效的去完成我们的操作。但是一直没有找到一款称心如意的&#xff0c;知道遇见了这款CSDN浏览器助手让我爱不…

Python-DDT框架

Install pip install ddt 实例 import unittest from ddt import ddt, data, unpackddt class MyTestCase(unittest.TestCase):data((2, 4), (6, 8))# unpack 说明测试用例有多个参数unpackdef test1(self,value1,value2):self.assertEqual(value2,value12)if __name__ __main…

IT知识库

http://www.it1352.com http://www.itdaan.com/ 转载于:https://www.cnblogs.com/gcgc/p/10233732.html

《看完它面试必solo | 寻找C站宝藏》

今天给大家搂点干货&#xff0c;2020 年 9 月 18 日晚 11 点半发布了 Vue 3.0 版本。到目前已经很多公司开始鼓励大家去学习Vue3了&#xff0c;在这里小编就把自己所了解到的‘皮毛’贡献给大家 Vue3.0 的突出亮点 Performance&#xff1a;性能比Vue2快1.2~2倍Tree shaking s…

KVC/KVO 本质

KVO 的实现原理 KVO是关于runtime机制实现的当某个类的对象属性第一次被观察时&#xff0c;系统就会在运行期动态地创建该类的一个派生类&#xff0c;在这个派生类中重写基类中任何被观察属性的setter方法。派生类在被重写的setter方法内实现真正的通知机制如果原类为Person&am…

mysql 各个版本驱动jar包

http://central.maven.org/maven2/mysql/mysql-connector-java/转载于:https://www.cnblogs.com/mzdljgz/p/11063354.html

攻破 程序员35岁 “瓶颈” 那都不是事!

我正在参与CSDN《新程序员》有奖征文&#xff0c;点击和我一起参与吧 下面呢&#xff0c;我就在这里给大家讲述一下我的经历吧。 初衷 作为程序猿的我们&#xff0c;初衷在哪里&#xff0c;高薪&#xff1f;体面&#xff1f;热爱&#xff1f;曾经有一个同学聊天中说到这个话…

Dollar Dayz POJ - 3181

解法 完全背包大数。。。不想写大数了放个python得了 代码 dp[0 for i in range(2000)] n,kmap(int,input().split()) num[i for i in range(1,k1)] dp[0]1 for i in range(k):for j in range(num[i],n1):dp[j]dp[j-num[i]] print(dp[n]) 转载于:https://www.cnblogs.com/bacca…

Vue项目中引用‘阿里巴巴字体图标库iconfont’

1.前言 在实际开发中&#xff0c;作为前端开发人员的我们经常会遇到下面这种ui图 我们看到在上面两个平台设计图中的出现了大量的图标&#xff0c;在某种情况下&#xff0c;这种图标是需要我们自己去找的&#xff0c;不要喷我们的 ui 哈&#xff0c;主要是我喜欢麻烦 哈哈&…

学习进度条-17

第十七周 所花时间&#xff08;包括上课&#xff09; 5小时 代码量&#xff08;行&#xff09; 300 博客量&#xff08;篇&#xff09; 4 了解到的知识点 对sql server数据库的连接&#xff0c;页面的跳转 转载于:https://www.cnblogs.com/zhaoxinhui/p/11068736.html

项目流程

转载于:https://www.cnblogs.com/Koma-vv/p/10243286.html

最详细的讲解 JS 原型与原型链

文章目录一. 普通对象与函数对象二. 构造函数三. 原型对象四. proto五. 构造器六. 原型链七. Prototype总结一. 普通对象与函数对象 JavaScript 中&#xff0c;万物皆对象&#xff01;但对象也是有区别的。分为普通对象和函数对象&#xff0c;Object 、Function 是 JS 自带的函…

jmeter分布式压测原理简介1

1、什么叫分布式压测&#xff1f; 分布式压测&#xff1a;模拟多台机器向目标机器产生压力&#xff0c;模拟几万用户并发访问 2、分布式压测原理&#xff1a;如下 3、更多补充.....待添加 转载于:https://www.cnblogs.com/yoyoblogs/p/11071774.html