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;纯手工打造

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…

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

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

《看完它面试必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…

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

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

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

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

项目流程

转载于: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

十三 re模块

一&#xff1a;什么是正则&#xff1f; 正则就是用一些具有特殊含义的符号组合到一起&#xff08;称为正则表达式&#xff09;来描述字符或者字符串的方法。或者说&#xff1a;正则就是用来描述一类事物的规则。&#xff08;在Python中&#xff09;它内嵌在Python中&#xff0c…

带你玩转 ui 框架 ——scoped及样式穿透问题详解

前言 在我们前端的开发中经常会使用到各种 ui 框架 下面这两个是比较火的&#xff0c;也是我常用的两个ui框架。 问题描述 但是在使用框架的时候难免会遇到需要改变组件中的一些样式&#xff0c;当然如果我们所有页面的组件样式都是统一的话&#xff0c;我们可以进行全局设置…

三分钟带你掌握 CSS3 的新属性

文章目录1. css3简介2. css3边框2.1 边框圆角2.2 边框阴影3. css3背景3.1背景图大小3.2背景图起始点4. css3文本效果4.1 文本阴影4.2 文本换行5. css3字体图标6. css32D转换7. css3 3D转换8. css3 transition8.1 单项改变8.2 单项改多项改变9. css3 动画1. css3简介 CSS 用于控…

用 div 仿写 input 和 textarea 功能

div仿写input和textarea input不能换行&#xff0c;textarea也不能跟随内容多少而增加高度。 contenteditable true; <div class"msg_content" contenteditable"true" placeholder在这里输入您的留言或建议></div> .msg_content {box-sizing:…

Vue项目中如何设置动态的TDK

TDK是什么 TDK就是网站的标题&#xff08;title&#xff09;、描述&#xff08;description&#xff09;和关键词&#xff08;keyword&#xff09; TDK在哪里 上面大佬对TDK的概念解释的很全面&#xff0c;但是在网页中的TDK在哪里呢&#xff0c;作为开发人员打开F12我们就…

PHP从零开始--基础篇

一、 变量 1.1概念 变量是存储数据的用的容器。 1.2定义变量 变量名的语法规则&#xff1a; 可以是数字、字母、下划线&#xff0c;但是不能以数字开头不能出现空格变量名是区分大小写变量名不能是系统中的关键字行业约定的语法规范 驼峰命名法 比如 myname 定义成 myNam…

PHP从零开始--循环数组

一、循环 1.1单层for循环 1.1.1基础语法 for(初识变量;结束范围;累加/累减){ 重复执行的代码 } 1、 先初识化变量$i 2、 $i<100表达式进行判断 3、 跳入循环&#xff0c;执行重复代码 4、 累加或者累加 5、 再进行$i<100表达式判断 6、 再跳入循环&#xff0c;执行重复…

Spring Cloud(F版)搭建高可用服务注册中心

上一篇文章【Spring Cloud搭建注册中心】成功搭建了一个Eureka Server服务注册中心&#xff0c;不过相信细心的朋友都会发现&#xff0c;这个服务注册中心是一个单节点服务注册中心&#xff0c;万一发生故障或者服务器宕机&#xff0c;那所有的服务可就不能使用了&#xff0c;这…