基于Python Django框架+jquery Ajax技术实现的增删改查(CRUD)

编程入门 行业动态 更新时间:2024-10-17 02:57:08

基于Python Django<a href=https://www.elefans.com/category/jswz/34/1770644.html style=框架+jquery Ajax技术实现的增删改查(CRUD)"/>

基于Python Django框架+jquery Ajax技术实现的增删改查(CRUD)

文件层级目录
  • djiangoproject
    • djiangoproject

      • settings.py
      • urls.py
      • wsgi.py
    • shopapp

      • entity
      • dao
      • service
      • admin.py
      • apps.py
      • models.py
      • test.py
      • views.py
    • static

      • css
      • bootstrap
      • js
      • uploads
      • echarts
    • templates

      • jobinfo
      • personalinfo
      • systeminfo
      • footer.html
      • index.html
      • left.html
      • login.html
      • main.html
      • top.html
    • manage.py


settings.py

"""
Django settings for djangoproject project.Generated by 'django-admin startproject' using Django 2.2.6.For more information on this file, see
.2/topics/settings/For the full list of settings and their values, see
.2/ref/settings/
"""import os# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production
# See .2/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '(46xri8ef295s*edox_(t=w%k$ks=wx0wmm=3@1yo!c=je81-p'SESSION_ENGINE = 'django.contrib.sessions.backends.cache'# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','shopapp.apps.ShopappConfig'
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middlewaremon.CommonMiddleware',#'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]ROOT_URLCONF = 'djangoproject.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'djangoproject.wsgi.application'# Database
# .2/ref/settings/#databasesDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db_test_shop1','HOST': '127.0.0.1','USER': 'root','PASSWORD':'root','PORT': '3306','OPTIONS':{'isolation_level':None}}
}# Password validation
# .2/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization
# .2/topics/i18n/LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)
# .2/howto/static-files/STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,"static"),
)# 配置输出sql语句
LOGGING = {'version': 1,'disable_existing_loggers': False,'handlers': {'console':{'level':'DEBUG','class':'logging.StreamHandler',},},'loggers': {'django.db.backends': {'handlers': ['console'],'propagate': True,'level':'DEBUG',},}
}

urls.py

"""djangoproject URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:.2/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 shopapp.views import *urlpatterns = [path('admin/', admin.site.urls),path('', index),path('gologin/', goLogin),path('login/', login),path('logout/', logout),path('regist.do/', regist),path('upload.do/', uploadFile),path('goajaxjobtaskinfo/', goJobTaskInfo),path('ajaxjobtaskinfo/', getJobTaskInfo),path('ajaxjobsalary/', getJobSalary),path('goajaxuserinfo/', goAjaxUserInfo),path('ajaxuserinfo/', getUserInfo),path('ajaxdeptinfo/', getDeptList)
]

wsgi.py

"""
WSGI config for djangoproject project.It exposes the WSGI callable as a module-level variable named ``application``.For more information on this file, see
.2/howto/deployment/wsgi/
"""import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoproject.settings')application = get_wsgi_application()

dao层(自配的数据库连接与操作,该项目未用)


entity下
jobtask.py

# 封装数据类 VO:value object  entity 类
class JobTask():def __init__(self):self.__taskId = Noneself.__taskTitle = Noneself.__taskURL = Noneself.__taskState = Nonepass@propertydef taskId(self):return self.__taskIdpass@taskId.setterdef taskId(self, taskId):self.__taskId = taskIdpass@propertydef taskTitle(self):return self.__taskTitlepass@taskTitle.setterdef taskTitle(self, taskTitle):self.__taskTitle = taskTitlepass@propertydef taskURL(self):return self.__taskURLpass@taskURL.setterdef taskURL(self, taskURL):self.__taskURL = taskURLpass@propertydef taskState(self):return self.__taskStatepass@taskState.setterdef taskState(self, taskState):self.__taskState = taskStatepasspass

entity下
user.py

# 封装数据类 VO:value object  entity 类
class User():def __init__(self):self.__userId = Noneself.__userName = Noneself.__userPwd = Noneself.__userSex = Noneself.__userPic = Noneself.__userBirth = Noneself.__userIntro = Noneself.__userDeptId = Noneself.__userDeptName = Noneself.__userRole = Nonepass@propertydef userId(self):return self.__userIdpass@userId.setterdef userId(self, userId):self.__userId = userIdpass@propertydef userName(self):return self.__userNamepass@userName.setterdef userName(self, userName):self.__userName = userNamepass@propertydef userPwd(self):return self.__userPwdpass@userPwd.setterdef userPwd(self, userPwd):self.__userPwd = userPwdpass@propertydef userSex(self):return self.__userSexpass@userSex.setterdef userSex(self, userSex):self.__userSex = userSexpass@propertydef userPic(self):return self.__userPicpass@userPic.setterdef userPic(self, userPic):self.__userPic = userPicpass@propertydef userBirth(self):return self.__userBirthpass@userBirth.setterdef userBirth(self, userBirth):self.__userBirth = userBirthpass@propertydef userIntro(self):return self.__userIntropass@userIntro.setterdef userIntro(self, userIntro):self.__userIntro = userIntropass@propertydef userDeptId(self):return self.__userDeptIdpass@userDeptId.setterdef userDeptId(self, userDeptId):self.__userDeptId = userDeptIdpass@propertydef userDeptName(self):return self.__userDeptNamepass@userDeptName.setterdef userDeptName(self, userDeptName):self.__userDeptName = userDeptNamepass@propertydef userRole(self):return self.__userRolepass@userRole.setterdef userRole(self, userRole):self.__userRole = userRolepasspass

migrations(无文件)
service(未使用)


admin.py

from django.contrib import admin# Register your models here.
from shopapp.models import TUser
from shopapp.models import JobDept
admin.site.register(TUser)
admin.site.register(JobDept)

apps.py

from django.apps import AppConfigclass ShopappConfig(AppConfig):name = 'shopapp'

models.py

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import modelsclass JobDept(models.Model):dept_id = models.IntegerField(primary_key=True)dept_name = models.CharField(unique=True, max_length=45, blank=True, null=True)dept_parentid = models.IntegerField(blank=True, null=True)class Meta:managed = Falsedb_table = 'job_dept'class TUser(models.Model):user_id = models.AutoField(db_column='USER_ID', primary_key=True)  # Field name made lowercase.user_name = models.CharField(db_column='USER_NAME', unique=True, max_length=32)  # Field name made lowercase.user_pwd = models.CharField(db_column='USER_PWD', max_length=512)  # Field name made lowercase.user_age = models.IntegerField(db_column='USER_AGE', blank=True, null=True)  # Field name made lowercase.user_sex = models.IntegerField(db_column='USER_SEX', blank=True, null=True)  # Field name made lowercase.user_qq = models.IntegerField(db_column='USER_QQ', blank=True, null=True)  # Field name made lowercase.user_cellphone = models.CharField(db_column='USER_CELLPHONE', max_length=20, blank=True, null=True)  # Field name made lowercase.user_money = models.FloatField(db_column='USER_MONEY', blank=True, null=True)  # Field name made lowercase.user_status = models.IntegerField(db_column='USER_STATUS', blank=True, null=True)  # Field name made lowercase.user_pic = models.CharField(db_column='USER_PIC', max_length=128, blank=True, null=True)  # Field name made lowercase.user_role = models.IntegerField(db_column='USER_ROLE', blank=True, null=True)  # Field name made lowercase.jobDept= models.ForeignKey(JobDept, db_column='', on_delete=models.CASCADE, blank=True, null=True, to_field='dept_id')  # null=True生成left joinuser_birth = models.DateTimeField(db_column='USER_BIRTH', blank=True, null=True)  # Field name made lowercase.user_intro = models.TextField(db_column='USER_INTRO', blank=True, null=True)  # Field name made lowercase.class Meta:managed = Falsedb_table = 't_user'

tests.py
(无代码)


views.py

from django.shortcuts import render,redirect
from django.http.response import HttpResponse
from shopapp.service.userservice import UserService
from shopapp.service.jobtaskservice import JobTaskService
from shopapp.entity.jobtask import JobTask
import json
import hashlib
from .models import TUser
from .models import JobDept
from django.core import serializers
import os
from datetime import datetime# Create your views here.
userService = UserService()
jobTaskService = JobTaskService()def index(request):return render(request, 'index.html')passdef goLogin(request):return render(request, 'login.html')passdef login(request):userName = request.POST.get('userName')userPwd = request.POST.get('userPwd')remeberMe = request.POST.get('rememberMe')result = userService.findUserByUserName(userName)isLogin = Falseif result and (remeberMe == None or remeberMe == 'false'):if result[0][2] == hashlib.md5(userPwd.encode(encoding='utf-8')).hexdigest():isLogin = Truepasselif result and remeberMe == 'true':if result[0][2] == userPwd:isLogin = Truepasspassif isLogin:userItem = {}userItem['userId'] = result[0][0]userItem['userName'] = result[0][1]userItem['userPic'] = result[0][9]userItem['userRole'] = result[0][10]request.session['user'] = userItemresponse = render(request, 'main.html')if remeberMe == 'false':response.set_cookie('userName', userName)response.set_cookie('userPwd', result[0][2])response.set_cookie('rememberMe', 'true')passelif remeberMe == None:response = render(request, 'main.html')response.delete_cookie('userName')response.delete_cookie('userPwd')response.delete_cookie('rememberMe')passreturn responseelse:return render(request, 'login.html')passdef regist(request):userDict = json.loads(request.body.decode('utf-8'))'''user = TUser()user.user_name = userDict.get('userName')  # 表单提交的数据使用request.form[]user.user_pwd = hashlib.md5((userDict.get('userPwd')).encode(encoding='utf-8')).hexdigest()user.user_pic = userDict.get('userPic')user.user_birth = datetime.strptime(userDict.get('userBirth'), '%Y-%m-%d')user.user_sex = userDict.get('userSex')user.user_intro = userDict.get('userIntro')result = user.save()'''result = TUser.objects.create(user_name = userDict.get('userName'),user_pwd=hashlib.md5((userDict.get('userPwd')).encode(encoding='utf-8')).hexdigest(),user_pic=userDict.get('userPic'),user_birth=datetime.strptime(userDict.get('userBirth'), '%Y-%m-%d'),user_sex=userDict.get('userSex'),user_intro=userDict.get('userIntro'))if result:result = 1else:result = 0return HttpResponse(json.dumps({'result': result}), content_type="application/json")passdef logout(request):request.session.flush()return render(request, 'login.html')passdef goJobTaskInfo(request):return render(request, "jobinfo/jobtaskinfo.html")passdef getJobTaskInfo(request):jobTaskData = request.body.decode('utf-8')jobTaskDict = json.loads(jobTaskData)tData = {}jobTask = JobTask()jobTask.taskTitle = jobTaskDict.get('taskTitle')jobTask.taskURL = jobTaskDict.get('taskURL')currentPage = int(jobTaskDict.get('currentPage'))pageSize = int(jobTaskDict.get('pageSize'))opr = jobTaskDict.get('opr')taskId = int(jobTaskDict.get('taskId'))jobTask.taskId = taskIdupdateResult = 0if opr == 'del':updateResult = jobTaskService.removeJobTask(taskId)passelif opr == 'update':tTask = jobTaskService.findJobTaskByJobTaskId(taskId)tData['taskId'] = tTask.taskIdtData['taskTitle'] = tTask.taskTitletData['taskURL'] = tTask.taskURLreturnData = {'code': 1, 'jobTaskData': tData, 'pageSize': pageSize, 'currentPage': currentPage, 'opr':'update'}return HttpResponse(json.dumps(returnData), content_type="application/json")elif opr == 'submitUpdate':updateResult = jobTaskService.updateJobTask(jobTask)passresult = jobTaskService.findPageJobTaskList(jobTask, pageSize, currentPage)counts = jobTaskService.countJobTasks(jobTask)totalPage = 0if(counts%pageSize == 0):totalPage = counts//pageSizeelse:totalPage = counts // pageSize + 1passreturnData = {'code':1, 'jobTaskData':result, 'pageSize':pageSize, 'currentPage':currentPage, 'totalPage':totalPage, 'updateResult':updateResult, 'opr':'search','counts':counts}return HttpResponse(json.dumps(returnData), content_type="application/json")passdef getJobSalary(request):result = jobTaskService.findJobMeanSalary()returnData = {'code':1, 'salary':result}r = json.dumps(returnData)return HttpResponse(json.dumps(returnData), content_type="application/json")passdef goAjaxUserInfo(request):return render(request, "systeminfo/userinfo.html")passdef getUserInfo(request):userData = request.body.decode('utf-8')userDict = json.loads(userData)tData = {}user = TUser()user.user_name = userDict.get('userName')user.user_sex = userDict.get('userSex')currentPage = int(userDict.get('currentPage'))pageSize = int(userDict.get('pageSize'))opr = userDict.get('opr')userId = int(userDict.get('userId'))user.user_id= userIduser.jobDept_id = int(userDict.get('userDeptId'))updateResult = 0if opr == 'del':updateResult = user.delete()passelif opr == 'update':tUser = TUser.objects.filter(user_id=userId).values('user_id', 'user_name', 'user_sex', 'jobDept_id', 'jobDept__dept_name')tData['userId'] = tUser[0].get('user_id')tData['userName'] = tUser[0].get('user_name')tData['userSex'] = tUser[0].get('user_sex')tData['userDeptId'] = tUser[0].get('jobDept_id')tData['userDeptName'] = tUser[0].get('jobDept__dept_name')returnData = {'code': 1, 'userData': tData, 'pageSize': pageSize, 'currentPage': currentPage, 'opr':'update'}return HttpResponse(json.dumps(returnData), content_type="application/json")elif opr == 'submitUpdate':currentPage = 1updateResult = TUser.objects.filter(user_id=userId).update(user_sex=user.user_sex, jobDept_id=user.jobDept_id)passquery = TUser.objectsif user.user_name:query = query.filter(user_name__contains=user.user_name)if user.user_sex:query = query.filter(user_sex=user.user_sex)passstartRow =  (currentPage - 1)*pageSizeendRow  = currentPage*pageSizeresult = query.values('user_id', 'user_name', 'user_sex', 'jobDept__dept_name')[startRow:endRow]  # 会生成 LIMIT 2 OFFSET 1counts = query.count()totalPage = 0if(counts%pageSize == 0):totalPage = counts//pageSizeelse:totalPage = counts // pageSize + 1pass# data = serializers.serialize("json", result, use_natural_foreign_keys=True)# data = json.loads(data)data = []for tempUser in result:dictItem = {'pk':tempUser.get('user_id')}fieldsItem ={'user_name':tempUser.get('user_name'), 'user_sex':tempUser.get('user_sex'), 'user_deptname':tempUser.get('jobDept__dept_name')}dictItem['fields'] = fieldsItemdata.append(dictItem)pass'''for tempUser, tdata in zip(result, data):tdata['fields']['user_deptname'] = tempUser.jobDept.dept_name # 获取外键关联的时候,是第二次查询pass'''returnData = {'code':1, 'userData':data, 'pageSize':pageSize, 'currentPage':currentPage, 'totalPage':totalPage, 'updateResult':updateResult, 'opr':'search','counts':counts}return HttpResponse(json.dumps(returnData), content_type="application/json")passdef getDeptList(request):parentId = int(request.GET.get('parentId'))if parentId ==0:result = JobDept.objects.filter(dept_parentid__isnull=True).all()else:result = JobDept.objects.filter(dept_parentid=parentId).all()data = serializers.serialize("json", result)data = json.loads(data)return HttpResponse(json.dumps({'code':1, 'data':data}), content_type="application/json")passdef uploadFile(request):# 后缀需要检查的file = request.FILES.get('upload')if file:try:with open(os.path.dirname(__file__) + os.sep + '..' + os.sep + 'static' + os.sep + 'uploads'+ os.sep + file.name, "wb+") as fp:for chunk in file.chunks():fp.write(chunk)passexcept Exception as e:return HttpResponse(json.dumps({'uploaded': 0, 'fileName': "", 'url': ""}), content_type="application/json")passreturn  HttpResponse(json.dumps({'uploaded': 1, 'fileName':file.name, 'url': os.sep + 'static' + os.sep + 'uploads'+ os.sep + file.name}), content_type="application/json")else:return  HttpResponse(json.dumps({'uploaded': 0, 'fileName': "", 'url': ""}), content_type="application/json")pass

jobtask.js

function getJobTaskData(currentPage, pageSize, opr, taskId) {var taskTitle =  document.searchForm.taskTitle.valuevar taskURL = document.searchForm.taskURL.valueif(opr == 'del'){if(!confirm('确定要删除吗?')){return false}}else if(opr == 'submitUpdate'){taskTitle = document.taskForm.taskTitle.valuetaskURL = document.taskForm.taskURL.valuetaskId = document.taskForm.taskId.valuecurrentPage = document.taskForm.currentPage.valuepageSize = document.taskForm.pageSize.value$('#modal-default').modal('hide')}$.ajax({type: 'post',                            // 传数据的方式url: '/ajaxjobtaskinfo/',dataType: 'json',                        // xml、json、script、htmldata:JSON.stringify({'taskTitle': taskTitle,     //  $('#taskTitle') == document.getElementById('taskTitle')'taskURL' : taskURL,'taskId': taskId,'pageSize': pageSize,'currentPage': currentPage,'opr': opr}),error: function(xhr, err){alert('请求失败,请检查,' + err + '!')},success: function(data, textStatus){    // success对应的回调函数的第一个参数,是服务器返回的数据// 查询后、删除后、修改后都走这个ifif(data.code == 1 && opr != 'update'){var htmlText = ""for(var i =0;i <data.jobTaskData.length;i++){htmlText += '<tr>' +'            <td align="center"><input type="checkbox" name="taskId" value="'+  data.jobTaskData[i][0] +'" /></td>\n' +'            <td>' + data.jobTaskData[i][0] + '</td>\n' +'            <td>' + data.jobTaskData[i][1] + '</td>\n' +'            <td style="width: 500px;word-break: break-all;">' + data.jobTaskData[i][2] + '</td>\n' +'            <td style="width: 160px;">\n' +' <button type="button" class="btn btn-danger" οnclick="getJobTaskData('+ data.currentPage +',' + data.pageSize + ','+ '\'del\''+',' + data.jobTaskData[i][0] +')">删除</button>' +' <button type="button" class="btn btn-info" οnclick="getJobTaskData('+ data.currentPage +',' + data.pageSize + ','+ '\'update\''+',' + data.jobTaskData[i][0] +')">修改</button>'+'            </td>\n' +'        </tr>\n'}pageText = '<tr style="text-align: right;"><td colspan="5">'+ '当前第' + data.currentPage + '页&nbsp;&nbsp;总共有' + data.totalPage + '页&nbsp;&nbsp;';if(data.currentPage <= 1) {pageText += '首页 &nbsp;&nbsp;上一页&nbsp;&nbsp;';}else{pageText += '<a href="javascript:getJobTaskData(1,10,\'search\', 0);">首页</a> &nbsp;&nbsp;' +'<a href="javascript:getJobTaskData(' + (data.currentPage - 1) + ', 10, \'search\', 0);">上一页</a>&nbsp;&nbsp;';}if(data.currentPage >= data.totalPage){pageText += '下一页&nbsp;&nbsp;尾页&nbsp;&nbsp;';}else {pageText += '<a href="javascript:getJobTaskData(' + (data.currentPage + 1) + ', 10, \'search\', 0);">下一页</a>&nbsp;&nbsp;' +'<a href="javascript:getJobTaskData(' + data.totalPage + ', 10, \'search\', 0);">尾页</a>&nbsp;&nbsp;';}pageText +='总共有'+ data.counts + '条&nbsp;&nbsp;</td></tr>'$('#dataBody').empty()$('#dataBody').append(htmlText)$('#dataBody').append(pageText)document.searchForm.currentPage.value = data.currentPagedocument.searchForm.pageSize.value=data.pageSizeif( opr != 'search' && data.updateResult > 0 ) {alert("操作成功")}else if(opr != 'search' && data.updateResult <= 0){alert("操作失败")}}else if(data.code == 1 && opr == 'update'){document.taskForm.taskTitle.value = data.jobTaskData.taskTitledocument.taskForm.taskURL.value = data.jobTaskData.taskURLdocument.taskForm.taskId.value = data.jobTaskData.taskIddocument.taskForm.currentPage.value = data.currentPagedocument.taskForm.pageSize.value = data.pageSize$('#modal-default').modal()}}});
}
$(document).ready(function(){getJobTaskData(1, 10, 'search', 0)}
)

userdata.py

function getUserData(currentPage, pageSize, opr, userId) {var userName =  document.searchForm.userName.valuevar userSex = document.searchForm.userSex.valuevar userDeptId = 0if(opr == 'del'){if(!confirm('确定要删除吗?')){return false}}else if(opr == 'submitUpdate'){userName = document.userForm.userName.valueuserSex = document.userForm.userSex.valueuserId = document.userForm.userId.valueuserDeptId = document.userForm.userDeptId.valuecurrentPage = document.userForm.currentPage.valuepageSize = document.userForm.pageSize.value}$.ajax({type: 'post',                            // 传数据的方式url: '/ajaxuserinfo/',dataType: 'json',                        // xml、json、script、htmldata:JSON.stringify({'userName': userName,     //  $('#userName') == document.getElementById('userName')'userSex' : userSex,'userId': userId,'userDeptId': userDeptId,'pageSize': pageSize,'currentPage': currentPage,'opr': opr  // 重用一个ajax请求实现增加删除修改查询 CRUD}),error: function(xhr, err){alert('请求失败,请检查,' + err + '!')},success: function(data, textStatus){    // success对应的回调函数的第一个参数,是服务器返回的数据// data = JSON.parse(data)if(data.code == 1 && opr != 'update'){var htmlText = ""for(var i =0;i <data.userData.length;i++){htmlText += '<tr>' +'            <td align="center"><input type="checkbox" name="userId" value="'+  data.userData[i].pk +'" /></td>\n' +'            <td>' + data.userData[i].pk + '</td>\n' +'            <td>' + data.userData[i].fields.user_name + '</td>\n' +'            <td>' + (data.userData[i].fields.user_sex == 1?'男':'女') + '</td>\n' +'         <td>' + data.userData[i].fields.user_deptname + '</td>\n' +'            <td style="width: 160px;">\n' +' <button type="button" class="btn btn-danger" οnclick="getUserData('+ data.currentPage +',' + data.pageSize + ','+ '\'del\''+',' + data.userData[i].pk +')">删除</button>' +' <button type="button" class="btn btn-info" οnclick="getUserData('+ data.currentPage +',' + data.pageSize + ','+ '\'update\''+',' + data.userData[i].pk +')">修改</button>'+'            </td>\n' +'        </tr>\n'}pageText = '<tr style="text-align: right;"><td colspan="6">'+ '当前第' + data.currentPage + '页&nbsp;&nbsp;总共有' + data.totalPage + '页&nbsp;&nbsp;';if(data.currentPage <= 1) {pageText += '首页 &nbsp;&nbsp;上一页&nbsp;&nbsp;';}else{pageText += '<a href="javascript:getUserData(1,10,\'search\', 0);">首页</a> &nbsp;&nbsp;' +'<a href="javascript:getUserData(' + (data.currentPage - 1) + ', 10, \'search\', 0);">上一页</a>&nbsp;&nbsp;';}if(data.currentPage >= data.totalPage){pageText += '下一页&nbsp;&nbsp;尾页&nbsp;&nbsp;';}else {pageText += '<a href="javascript:getUserData(' + (data.currentPage + 1) + ', 10, \'search\', 0);">下一页</a>&nbsp;&nbsp;' +'<a href="javascript:getUserData(' + data.totalPage + ', 10, \'search\', 0);">尾页</a>&nbsp;&nbsp;';}pageText +='总共有'+ data.counts + '条&nbsp;&nbsp;</td></tr>'$('#dat

更多推荐

基于Python Django框架+jquery Ajax技术实现的增删改查(CRUD)

本文发布于:2024-03-08 09:54:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720542.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:框架   技术   Django   Python   CRUD

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!