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.访问效果:

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用PythonDjango框架实现数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django实现针对数据增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格分页实现导出数据到Excel、实现通过Excel导入数据实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值