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.pswp.cn/news/248695.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248695.shtml
英文地址,請注明出處:http://en.pswp.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