Django,ajax实现表格增删查改,Django内置分页功能。
1.工程目录

2.urls.py
"""Django_ajax URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01 import views urlpatterns = [
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_page
self.show_page_num = show_page_num
super(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 = 1
limit_right = 1 + self.show_page_num+1
elif self.current_page+self.show_page_num > self.num_pages:
limit_right = self.num_pages+1
limit_left = self.num_pages-self.show_page_num return range(limit_left, limit_right) def students(request): current_page = request.GET.get('p')
num_A_page = request.GET.get('n')
show_page_num = 10 if num_A_page == None:
num_A_page = 10 paginator = 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.id except Exception as e:
response['status'] = False
response['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'] = False
response['code'] = 1001
response['message'] = '用户输入错误!' import json
result = 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 makemigrations python manage.py migrate
7.运行服务器:
在pycharm中的Terminal中输入:
python manage.py runserver 8081

运行成功
8.访问效果:

Django,ajax实现表格增删查改,Django内置分页功能。的更多相关文章
- django models进行数据库增删查改
在cmd 上运行 python manage.py shell 引入models的定义 from app.models import myclass ##先打这一行 ------这些是 ...
- ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!
转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...
- JAVAWEB实现增删查改(图书信息管理)之修改功能实现
首先通过点击index.jsp页面的修改按钮,获取该行的id:↓ 其次,跳转到updateBooks.jsp页面进行修改信息,页面代码如下:↓ <%@ page import="Boo ...
- JAVAWEB实现增删查改(图书信息管理)之添加功能实现
addBooks.jsp页面代码:↓ <%-- Created by IntelliJ IDEA. User: NFS Date: 2019-7-12 Time: 14:30 To change ...
- JavaWeb实现增删查改(图书信息管理)之删除功能实现
—————————————————————————————————————————————————————————— 删除按钮对应的servlet -->DeleteBooks.java ↓ ...
- JDBC课程4--使用PreparedStatement进行增删查改--封装进JDBCTools的功能中;模拟SQL注入 ; sql的date()传入参数值格式!
主要内容: /*SQL 的date()需要传入参数值: preparedStatement().setDate(new java.util.Date().getTime()); 熟悉了使用Prepar ...
- Java实现单链表的增删查改及逆置打印
//所提供的接口 LinkList.java package Struct; public interface LinkList {//判断链表为空public boolean linkListIsE ...
- django内置分页功能扩展
实现自定制页码数类型class myPaginator(Paginator): def __init__(self,curr_page,per_page_num,*args,**kwargs): se ...
- Django笔记&教程 5-1 基础增删查改
Django 自学笔记兼学习教程第5章第1节--基础增删查改 点击查看教程总目录 第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表. 这一章将介绍如何使用模 ...
随机推荐
- python3+requests:post请求四种传送正文方式(详解)
前言:post请求我在python接口自动化2-发送post请求详解(二)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等,可以参考Get,Post请求方式经典详解进行学习一下. 我 ...
- unittest测试框架和测试报告的输出实例(一)
我们整个自动化才是报告的环节基本上分为三个部分: 1.测试用例的准备 2.测试用例的执行 3.测试报告的输出 1.测试用例的准备: 那我们就以搜孤网页做一个简单的用例: from selenium i ...
- [性能测试]:内存泄漏以及MAT(Memory Analyzer Tool)工具使用分析
一.今天在查看服务器时候,发现内存使用率直接就到99%了, 二.用ps -uaxw查看一下,每个占用内存较多的进程情况: 三,挑出可疑的进程,生成dump文件: jmap -dump:format=b ...
- Docker实战:更轻松、更愉快、更高效
编者按:借助Docker,我们可以更容易地进行web应用部署,而同时不必头疼于项目依赖.环境变量以及各种配置问题,Docker可以快捷.高效地处理好这一切.而这也是本教程所要实现的主要目的.以下是作者 ...
- (转)搞个这样的APP要多久?心酸啊。
这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着水杯,正对面坐着来访的王总,他是在别处打拼的人,这几年据说收获颇丰,见移动互联网如火如荼,自然也想着要 ...
- elastic-job动态添加定时任务
在elastic-job的使用过程中,我们会遇到动态添加定时任务的时候,但是官网上面并没有对这块内容进行说明.按照我的理解以及官网上面elastic-job的框架图,ej的定时任务其实是存储在zook ...
- 安装php readline扩展报错 Please reinstall libedit
现象:configure: error: Please reinstall libedit – I cannot find readline.h解决办法:安装 Editline Library (li ...
- php 判断字符串之间包含关系
之前常用stristr , strpos判断. 因为处理1000W * 1000W级别,循环就是漫长漫长... 在此,对stristr, strpos, explode判断字符串包含关系处理速度对比 ...
- Linux下mysql基础命令(一)
1, 创建mysqld数据库的管理用户: 要把root用户设置为管理员,我们应该运行下面的命令: # mysqladmin -u root password 密码 一般情 ...
- python-FTP模块
#!/user/bin/python #coding=utf-8 import ftplib import os import socket HOST = 'ftp.kernel.org' DIRN ...