赞
踩
一、jQuery easyUI
jQuery easyUI是建立在jQuery javaScript库上的一组用户界面交互、特效、小部件及主题.无论您是在创建高度交互的Web应用程序还是仅仅想窗口控制添加一个日期选择器,jQuery easyUI 都是一个完美的选择
1创建新的项目,导入静态资源,更改setting设置
下载下来的jQuery easyUI包找到所选文件导入静态资源static包中
2.创建新的manager.html页面 配置路径,写入函数
先找到jQuery easyUI说明文件夹如下(jquery-easyui-EDT-1.4.2-build1---->jquery-easyui-1.4.2--->docs(千万别点我)--->jQuery EasyUI 1.4.2 版 API 中文版 (Made By Richie696).chm)
将所框出的代码写入html页面并修改script路径注意顺序
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link rel="stylesheet" type="text/css" href="/static/themes/default/easyui.css">
- <link rel="stylesheet" type="text/css" href="/static/themes/icon.css">
-
- <script type="text/javascript" src="/static/jquery.min.js"></script>
- <script type="text/javascript" src="/static/jquery.easyui.min.js"></script>
- </head>
- <body class="easyui-layout">
- <div data-options="region:'north',title:'North Title',split:true" style="height:100px;"></div>
- <div data-options="region:'south',title:'South Title',split:true" style="height:100px;"></div>
- <div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width:100px;"></div>
- <div data-options="region:'west',title:'West',split:true" style="width:100px;"></div>
- <div data-options="region:'center',title:'center title'" style="padding:5px;background:#eee;"></div>
- </body>
- </html>

写入index函数
- from django.shortcuts import render
-
- # Create your views here.
- def index(request):
- return render(request,'manager.html')
写入总路径
- from django.contrib import admin
- from django.urls import path
- from wd_user.views import index
-
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('', index),
-
-
- ]
配置静态资源路径
进入浏览器后显示效果展示
区域面板属性
属性名 | 属性值类型 | 描述 | 默认值 |
---|---|---|---|
title | string | 布局面板标题文本。 | null |
region | string | 定义布局面板位置,可用的值有:north, south, east, west, center。 | |
border | boolean | 为true时显示布局面板边框。 | true |
split | boolean | 为true时用户可以通过分割栏改变面板大小。 | false |
iconCls | string | 一个包含图标的CSS类ID,该图标将会显示到面板标题上。 | null |
href | string | 用于读取远程站点数据的URL链接 | null |
collapsible | boolean | 定义是否显示折叠按钮。(该属性自1.3.3版开始可用) | true |
minWidth | number | 最小面板宽度。(该属性自1.3.3版开始可用) | 10 |
minHeight | number | 最小面板高度。(该属性自1.3.3版开始可用) | 10 |
maxWidth | number | 最大面板宽度。(该属性自1.3.3版开始可用) | 10000 |
maxHeight | number | 最大面板高度。(该属性自1.3.3版开始可用) | 10000 |
创建数据库表模板
- from django.db import models
-
- # Create your models here.
- class Category(models.Model):
- #类别模型
- name=models.CharField(max_length=10,null=False)
- parent=models.ForeignKey('Category',on_delete=None,null=True)
- class Produce(models.Model):
- #产品
- name=models.CharField(max_length=20)
- price=models.FloatField()
- create_date=models.DateTimeField()
- category=models.ForeignKey('Category',on_delete=None,null=True)
-
执行shell命令创建表然后在表中添加数据
接下来为页面嘴边创建一个树状菜单
修改html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link rel="stylesheet" type="text/css" href="/static/themes/default/easyui.css">
- <link rel="stylesheet" type="text/css" href="/static/themes/icon.css">
-
- <script type="text/javascript" src="/static/jquery.min.js"></script>
- <script type="text/javascript" src="/static/jquery.easyui.min.js"></script>
- <script type="text/javascript">
- $(function(){
- //创建一个树状菜单
- $('#tt').tree({
- url:'catetree'
- });
- })
- </script>
- </head>
-
- <body class="easyui-layout">
- <div data-options="region:'north',title:'',split:true,collapsible:false" style="height:100px;">
- <h1 STYLE="text-align: center">欢迎访问jQuery easyUI</h1>
- </div>
- <div data-options="region:'west',title:'West',split:true" style="width:100px;">
- <ul id="tt">
-
- </ul>
- </div>
- <div data-options="region:'center',title:'center title'" style="padding:5px;background:#eee;"></div>
- </body>
-
- </html>

填写树状函数
- from django.http import HttpResponse
- from django.shortcuts import render
-
- # Create your views here.
- from django.views.decorators.csrf import csrf_exempt
- import json
-
- from wd_user.models import Category
-
-
- def index(request):
- return render(request,'manager.html')
- #获取类别表 组装成一个tree结构
- @csrf_exempt
- def catetree(request):
- #每次请求都是某一个类别下的分类
- tree=[]
- #获取请求id,如果没有默认为none
- id=request.POST.get('id',None)
- #查询
- #查询所有parent_id等于父集id的所有产品
- category=Category.objects.filter(parent_id=id).all()
- for cate in category:
- #每一个类别都是一个字典
- ca={}
- ca['id']=cate.id
- ca['text']=cate.name
- ca['state']='closed'
- tree.append(ca)
- #将返回数据改成json格式
- return HttpResponse(json.dumps(tree))

填写路径urls.py
进入浏览器效果显示
2.获取各类名下的产品
更改html
添加函数
- from wd_user.models import Category, Produce
- @csrf_exempt
- def ProduceList(request):
- #请求获取某个类别下的所有产品
- proSet=Produce.objects.all()
- tree=[]
- for pro in proSet:
- p={}
- p['id']=pro.id
- p['name']=pro.name
- p['price']=pro.price
- p['create_date']=pro.create_date.strftime('%Y-%m-%d')
- tree.append(p)
- return HttpResponse(json.dumps(tree))
配置路径
- from django.contrib import admin
- from django.urls import path
- from wd_user.views import *
-
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('', index),
- path('catetree',catetree),
- path('ProduceList',ProduceList)
-
- ]
浏览器效果
二、分页
1.全部产品分页
步骤:<1>获取第几页多少条 <2>做分页 <3>获取第几页 <4>设置一个total 和rows
更改html
更改函数
-
- from django.core.paginator import Paginator
- @csrf_exempt
- def ProduceList(request):
- page=request.POST.get('page',1)#默认第一页
- rows=request.POST.get('rows',10)#默认每页十条
- #请求获取某个类别下的所有产品
- proSet=Produce.objects.all().order_by()
- #1创建一个分页器 1被分页的集合 2每页多少条数据
- paginator=Paginator(proSet,rows)
- #2.获取第几页的数据
- pages=paginator.get_page(page)
-
- tree=[]
- #返回值中必须有total(总页数) rows(当前页的数据集)
- for pro in pages:
- p={}
- p['id']=pro.id
- p['name']=pro.name
- p['price']=pro.price
- p['create_date']=pro.create_date.strftime('%Y-%m-%d')
- tree.append(p)
- grid = {'total': paginator.count,
- 'rows':tree}
- return HttpResponse(json.dumps(grid))

实现效果
2.添加点击事件出来相应的产品
更改html
更改函数
效果展示
三、排序
sort | param | 排序datagrid表格。(该方法自1.3.6版开始可用) 代码示例: |
sortable | boolean | 如果为true,则允许列使用排序。 |
让价格和名字可以排序
更改html
更改函数
实现效果 点击价格 名字 即可排序
四、按钮
toolbar | array,selector | 顶部工具栏的DataGrid面板。可能的值: 1) 一个数组,每个工具属性都和linkbutton一样。 2) 选择器指定的工具栏。 在<div>标签上定义工具栏:
通过数组定义工具栏: |
更改html下的datagrid
添加按钮
五、form表单
点击添加出现窗口
$().datagrid.('reload’)重载记录,跟'load'方法一样但是重载的是当前页的记录而非第一页。
data函数
pid
eval
success
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link rel="stylesheet" type="text/css" href="/static/themes/default/easyui.css">
- <link rel="stylesheet" type="text/css" href="/static/themes/icon.css">
-
- <script type="text/javascript" src="/static/jquery.min.js"></script>
- <script type="text/javascript" src="/static/jquery.easyui.min.js"></script>
- <script type="text/javascript">
- $(function(){
- //创建一个树状菜单
- $('#tt').tree({
- url:'catetree',
- onClick:function(node){
- //点击后重新加载构造datagrid
- $('#dg').datagrid({
- queryParams:{
- 'category_id':node.id
- }
- })
-
- }
- });
- $('#dg').datagrid({
- url:'ProduceList',
- //确认启动分页
- pagination:true,
- //分页单
- pageList:[5,10,15],
- columns:[[
- {field:'id',title:'编号',width:100},
- {field:'name',title:'名字',width:100,sortable:true},
- {field:'price',title:'价格',width:100,align:'right',sortable:true} ,
- {field:'create_date',title:'发布时间',width:100,align:'right'}
- ]],
- toolbar: [
- {
- iconCls: 'icon-add',
- text:'添加',
- handler: function(){
- var node=$("#tt").tree("getSelected");
- if(node){
- //取消异步请求
- {# $.ajaxSetup({#}
- {# async:false#}
- {# });#}
- $('#Category').combotree("tree").tree({
- onLoadSuccess:function(node,date){
- $('#Category').combotree("tree").tree("expandAll")
- }
- });
- //开启异步请求
- {# $.ajaxSetup({#}
- {# async:true#}
- {# });#}
- //将选中的类别的ID绑定到下拉列表中
- $('#ff').form("load",{"categoryid":node.id})
- }
- $('#newPro').dialog('open');
- }
- },'-',{
- iconCls: 'icon-edit',
- text:'编辑',
- handler: function(){}
- },'-',{
- iconCls: 'icon-help',
- text:'帮助',
- handler: function(){}
- },'-',{
- iconCls: 'icon-remove',
- text:'删除',
- handler: function(){
- var row=$('#dg').datagrid("getSelected");
- //alert(row.id);
- $.get('delete','pid='+row.id,function (data) {
- data=eval('('+data+')');
- $.messager.show({
- msg:data.msg
- });
- $('#dg').datagrid('reload')
-
- })
- }
- }],
- //只能选中一行
- singleSelect:true
- });
- //窗口设置
- $('#newPro').dialog({
- title: '添加产品',
- width: 400,
- height: 200,
- closed: true,
- cache: false,
- modal: true,
- //为窗口添加保存和取消按钮
- buttons:[
- {
- text:'保存',
- iconCls:'icon-save',
- handler:function(){
- $('#ff').submit();//执行submit事件
- $('#dg').datagrid("reload")//重载表单dg
-
- }
- },{
- text:'取消',
- iconCls:'icon-cancel',
- handler:function(){
- $('#newPro').window('close')
- }}]
- });
- //定义下拉列表框在什么时候加载
- $('#Category').combotree({
- url: '/catetree',
- required: true
- });
- $('#ff').form({
- url:'addProduce',
- success:function (add) {
- add=eval('('+add+')');
- $.messager.show({
- title:'商品保存信息',
- msg:add.msg,
- timeout:5000,
- showType:'slide'
- })
- }
- })
- });
- //设置时间格式
- function myformatter(date){
- var y=date.getFullYear();
- var m=date.getMonth()+1;
- var d=date.getDate();
- var h=date.getHours();
- var M=date.getMinutes();
- var s=date.getSeconds();
- return y+'-'+(m<10?('0'+m):m)+'-'+
- (d<10?('0'+d):d)+' '+h+':'+M+':'+s;
- }
-
- </script>
- </head>
-
- <body class="easyui-layout">
- <div data-options="region:'north',title:'',split:true,collapsible:false" style="height:100px;">
- <h1 STYLE="text-align: center">欢迎访问jQuery easyUI</h1>
- </div>
- <div data-options="region:'west',title:'菜单',split:true" style="width:100px;">
- <ul id="tt">
-
- </ul>
- </div>
- <div data-options="region:'center',title:'产品列表'" style="padding:5px;background:#eee;">
- <table id="dg"></table>
- </div>
- <div id="newPro">
- <form id="ff" method="post" action="/addProduce">
- <div>
- <label for="name">产品名称:</label>
- <input class="easyui-validatebox" type="text" name="name" data-options="required:true" />
- </div>
- <div>
- <label >价格:</label>
- <input name="price" type="text" class="easyui-numberbox" value="100" data-options="min:0,precision:2"></input>
- </div>
- <div>
- <label >类别:</label>
- <select name="cata" id="Category" class="easyui-combotree" style="width:200px;"data-options="required:true"></select>
- </div>
- <div>
- <label>发布时间:</label>
- <input name="createDate" class="easyui-datetimebox" data-options="formatter:myformatter ,required:true,showSeconds:false" style="width:150px">
- </div>
- </form>
- </div>
- </body>
-
- </html>

- import datetime
-
- from django.http import HttpResponse
- from django.shortcuts import render
- from django.core.paginator import Paginator
- # Create your views here.
- from django.views.decorators.csrf import csrf_exempt
- import json
-
- from wd_user.models import Category, Produce
-
-
- def index(request):
- return render(request,'manager.html')
- #获取类别表 组装成一个tree结构
- @csrf_exempt
- def catetree(request):
- #每次请求都是某一个类别下的分类
- tree=[]
- #获取请求id,如果没有默认为none
- id=request.POST.get('id',None)
- #查询
- #查询所有parent_id等于父集id的所有产品
- category=Category.objects.filter(parent_id=id).all()
- for cate in category:
- #每一个类别都是一个字典
- ca={}
- ca['id']=cate.id
- ca['text']=cate.name
- ca['state']='closed'
- tree.append(ca)
- #将返回数据改成json格式
- return HttpResponse(json.dumps(tree))
- @csrf_exempt
- def ProduceList(request):
- cate_id = request.POST.get('category_id', None)
-
- #获取排序的列和排序方式
- sort=request.POST.get('sort', 'id')#排序的列默认是id
- order=request.POST.get('order', 'asc')
-
- page=request.POST.get('page',1)#默认第一页
- rows=request.POST.get('rows',10)#默认每页十条
- proSet=Produce.objects.all()
-
- if cate_id is not None:
- proSet=proSet.filter(category_id=cate_id)
- if order != 'asc':
- sort='-'+sort
- proSet=proSet.order_by(sort)
- paginator=Paginator(proSet,rows)
-
- pages=paginator.get_page(page)
- tree=[]
- #返回值中必须有total(总页数) rows(当前页的数据集)
- for pro in pages:
- p={}
- p['id']=pro.id
- p['name']=pro.name
- p['price']=pro.price
- p['create_date']=pro.create_date.strftime('%Y-%m-%d')
- tree.append(p)
- grid = {'total': paginator.count,
- 'rows':tree}
- return HttpResponse(json.dumps(grid))
- @csrf_exempt
- def addProduce(request):
- name=request.POST.get('name')
- price=request.POST.get('price')
- category=request.POST.get('cata')
- create_date=request.POST.get('createDate')
- pro=Produce()
- pro.name =name
- pro. price=price
- pro. category_id=category
- pro.create_date =create_date
- pro.save()
- data={'msg':'保存成功','state':'true'}
- return HttpResponse(json.dumps(data))
- @csrf_exempt
- def delete(request):
- pid=request.GET.get('pid')
- Produce.objects.filter(pk=pid).delete()
- data={'msg':'删除成功'}
- return HttpResponse(json.dumps(data))

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。