1. 一、作业需求:
  2.  
  3. 1、用户组的增删改查
  4.  
  5. 2、用户增删该查
  6. - 添加必须是对话框
  7. - 删除必须是对话框
  8. - 修改,必须显示默认值
  9.  
  10. 3、比较好看的页面
  11.  
  12. 二、博客地址:https://www.cnblogs.com/catepython/p/9682884.html
  13.  
  14. 三、运行环境
  15.  
  16. 操作系统:Win10
  17.  
  18. Python3.6.4rcl
  19.  
  20. Pycharm2017.3.4
  21.  
  22. 四、功能实现
  23.  
  24. 1、完成了后台登录UI、数据交互(判断与验证)接口
  25.  
  26. 2、搭建配置Django框架
  27.  
  28. 3、后台管理整体页面布局
  29.  
  30. 4、用户管理模块相关功能的实现
  31.  
  32. 5、对用户信息通过后台对数据库操作实现了增删改查
  33.  
  34. 五、测试
  35.  
  36. 1、对各UI的跳转进行功能测试
  37.  
  38. 2、对用户数据的数据接口测试
  39.  
  40. 3、编辑框中对用户输入的信息做了验证和判断
  41.  
  42. 六、备注
  43.  
  44. 通过此次学习和实践
  45.  
  46. 1、掌握了Django框架基础知识
  47.  
  48. 2、对后台页面布局更加的熟练
  49.  
  50. 3、也熟练运用掌握了ORM操作

readme

一、相关知识

  1. 1Django请求生命周期
  2. -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串
  3. -> URL对应关系(匹配) -> 视图函数 -> 打开一个HTML文件,读取内容
  4.  
  5. 2、创建django projcet
  6.  
  7. django-admin startproject mysite
  8.  
  9. ..
  10.  
  11. mysite
  12. mysite
  13. - 配置文件
  14. - url.py
  15. - settings.py
  16.  
  17. cd mysite
  18. python manage.py startapp cmdb
  19.  
  20. mysite
  21. mysite
  22. - 配置文件
  23. - url.py
  24. - settings.py
  25. cmdb
  26. - views.py
  27. - admin.py
  28. - models.py # 创建数据库表
  29.  
  30. 3、配置
  31.  
  32. 模板路径
  33. 静态文件路径
  34. # CSRF
  35.  
  36. 4、编写程序
  37.  
  38. a. url.py
  39.  
  40. /index/ -> func
  41.  
  42. b. views.py
  43.  
  44. def func(request):
  45. # 包含所有的请求数据
  46. ...
  47. return HttpResponse('字符串')
  48. return render(request, 'index.html', {''})
  49. retrun redirect('URL')
  50.  
  51. c. 模板语言
  52. return render(request, 'index.html', {'li': [11,22,33]})
  53.  
  54. {% for item in li %}
  55. <h1>{{item}}</h1>
  56. {% endfor %}
  57.  
  58. *********** 索引用点 **********
  59. <h2> {{item.0 }} </h2>
  60.  
  61. 一、路由系统,URL
  62. 1url(r'^index/', views.index),
  63. url(r'^home/', views.Home.as_view()),
  64. 2url(r'^detail-(\d+).html', views.detail),
  65. 3url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
  66.  
  67. PS:
  68. def detail(request, *args,**kwargs):
  69. pass
  70.  
  71. 实战:
  72. a.
  73. url(r'^detail-(\d+)-(\d+).html', views.detail),
  74.  
  75. def func(request, nid, uid):
  76.  
  77. pass
  78.  
  79. def func(request, *args):
  80. args = (2,9)
  81.  
  82. def func(request, *args, **kwargs):
  83. args = (2,9)
  84.  
  85. b.
  86. url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
  87.  
  88. def func(request, nid, uid):
  89. pass
  90.  
  91. def funct(request, **kwargs):
  92. kwargs = {'nid': 1, 'uid': 3}
  93.  
  94. def func(request, *args, **kwargs):
  95. args = (2,9)
  96. 4 name
  97.  
  98. URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****
  99.  
  100. url(r'^asdfasdfasdf/', views.index, name='i1'),
  101. url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),
  102. url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),
  103.  
  104. def func(request, *args, **kwargs):
  105. from django.urls import reverse
  106.  
  107. url1 = reverse('i1') # asdfasdfasdf/
  108. url2 = reverse('i2', args=(1,2,)) # yug/1/2/
  109. url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/
  110.  
  111. xxx.html
  112.  
  113. {% url "i1" %} # asdfasdfasdf/
  114. {% url "i2" 1 2 %} # yug/1/2/
  115. {% url "i3" pid=1 nid=9 %} # buy/1/9/
  116.  
  117. 注:
  118. # 当前的URL
  119. request.path_info
  120. 5、多级路由
  121.  
  122. project/urls.py
  123. from django.conf.urls import url,include
  124. from django.contrib import admin
  125.  
  126. urlpatterns = [
  127. url(r'^cmdb/', include("app01.urls")),
  128. url(r'^monitor/', include("app02.urls")),
  129. ]
  130.  
  131. app01/urls.py
  132. from django.conf.urls import url,include
  133. from django.contrib import admin
  134. from app01 import views
  135.  
  136. urlpatterns = [
  137. url(r'^login/', views.login),
  138. ]
  139.  
  140. app02/urls.py
  141. from django.conf.urls import url,include
  142. from django.contrib import admin
  143. from app02 import views
  144.  
  145. urlpatterns = [
  146. url(r'^login/', views.login),
  147. ]
  148.  
  149. 6、默认值(欠)
  150.  
  151. 7、命名空间(欠)
  152.  
  153. 二、视图
  154. 1、获取用户请求数据
  155. request.GET
  156. request.POST
  157. request.FILES
  158. PS:
  159. GET:获取数据
  160. POST:提交数据
  161.  
  162. 2checkbox等多选的内容
  163. request.POST.getlist()
  164. 3、上传文件
  165. # 上传文件,form标签做特殊设置
  166. obj = request.FILES.get('fafafa')
  167. obj.name
  168. f = open(obj.name, mode='wb')
  169. for item in obj.chunks():
  170. f.write(item)
  171. f.close()
  172.  
  173. 4FBV & CBV
  174. function base view
  175.  
  176. url.py
  177. index -> 函数名
  178.  
  179. view.py
  180. def 函数(request):
  181. ...
  182. ====》
  183. /index/ -> 函数名
  184.  
  185. /index/ ->
  186.  
  187. ====》
  188.  
  189. 建议:两者都用
  190.  
  191. 5、装饰器
  192.  
  193. 三、模板
  194.  
  195. 四、ORM操作
  196. select * from tb where id > 1
  197. # 对应关系
  198. models.tb.objects.filter(id__gt=1)
  199. models.tb.objects.filter(id=1)
  200. models.tb.objects.filter(id__lt=1)
  201.  
  202. 创建类
  203.  
  204. a. 先写类
  205. from django.db import models
  206.  
  207. # app01_userinfo
  208. class UserInfo(models.Model):
  209. # id列,自增,主键
  210. # 用户名列,字符串类型,指定长度
  211. username = models.CharField(max_length=32)
  212. password = models.CharField(max_length=64)
  213.  
  214. b. 注册APP
  215.  
  216. INSTALLED_APPS = [
  217. 'django.contrib.admin',
  218. 'django.contrib.auth',
  219. 'django.contrib.contenttypes',
  220. 'django.contrib.sessions',
  221. 'django.contrib.messages',
  222. 'django.contrib.staticfiles',
  223. 'app01',
  224. ]
  225. c. 执行命令
  226. python manage.py makemigrations
  227. python manage.py migrate
  228.  
  229. d. ********** 注意 ***********
  230. Django默认使用MySQLdb模块链接MySQL
  231. 主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
  232. import pymysql
  233. pymysql.install_as_MySQLdb()
  234.  
  235. 1. 根据类自动创建数据库表
  236. # app下的models.py
  237.  
  238. python manage.py makemigrations
  239. python manage.py migrate
  240.  
  241. 字段:
  242. 字符串类型
  243.  
  244. 数字
  245.  
  246. 时间
  247.  
  248. 二进制
  249.  
  250. 自增(primary_key=True
  251.  
  252. 字段的参数:
  253. null -> db是否可以为空
  254. default -> 默认值
  255. primary_key -> 主键
  256. db_column -> 列名
  257. db_index -> 索引
  258. unique -> 唯一索引
  259. unique_for_date ->
  260. unique_for_month
  261. unique_for_year
  262. auto_now -> 创建时,自动生成时间
  263. auto_now_add -> 更新时,自动更新为当前时间
  264.  
  265. # obj = UserGroup.objects.filter(id=1).update(caption='CEO')
  266. # obj = UserGroup.objects.filter(id=1).first()
  267. # obj.caption = "CEO"
  268. # obj.save()
  269.  
  270. choices -> django admin中显示下拉框,避免连表查询
  271. blank -> django admin是否可以为空
  272. verbose_name -> django admin显示字段中文
  273. editable -> django admin是否可以被编辑
  274. error_messages -> 错误信息欠
  275. help_text -> django admin提示
  276. validators -> django form ,自定义错误信息(欠)
  277.  
  278. 创建 Django 用户:python manage.py createsuperuser
  279.  
  280. 2. 根据类对数据库表中的数据进行各种操作
  281.  
  282. 一对多:
  283.  
  284. a. 外检
  285. b.
  286. 外键字段_id
  287. c.
  288. models.tb.object.create(name='root', user_group_id=1)
  289.  
  290. d.
  291.  
  292. userlist = models.tb.object.all()
  293. for row in userlist:
  294. row.id
  295. row.user_group_id
  296. row.user_group.caption

重要笔记

二、程序结构图

三、效果图

四、数据结构

五、核心代码

cmdb/views    主代码逻辑

  1. from django.shortcuts import render
  2. from django.shortcuts import redirect
  3. from django.shortcuts import HttpResponse
  4. from cmdb import models
  5. from django.views import View
  6. # Create your views here.
  7. def login(request):
  8. '''
  9. 用户登录接口
  10. :param request:
  11. :return:
  12. '''
  13. mesg = ""
  14. if request.method == "POST":
  15. user = request.POST.get("user",None)
  16. password = request.POST.get("password",None)
  17. print(user,password)
  18. result = models.User_admin.objects.filter(user_name = user,password=password).first()
  19. if result:
  20. return redirect('/cmdb/home')
  21. else:
  22. mesg = "用户名和密码不匹配"
  23. return render(request,'登录.html',{"error_mesg":mesg})
  24.  
  25. def home(request):
  26. '''
  27. 后台管理接口
  28. :param request:
  29. :return:
  30. '''
  31. return render(request,'后台管理.html')
  32.  
  33. def user_info(request):
  34. '''
  35. 用户管理接口
  36. :param request:
  37. :return:
  38. '''
  39. if request.method == "POST":
  40. text = request.POST.get("text",None)
  41. if str(text).isdigit(): #判断text内容是否为整数, 如果是整数就用户ID搜索,如果是字符串就用户名搜索
  42. text = int(text)
  43. obj = models.User_admin.objects.filter(user_id=text).all()
  44. return render(request, "user_info.html", {"obj": obj})
  45. else:
  46. obj = models.User_admin.objects.filter(user_name__icontains=text).all()
  47. return render(request, "user_info.html",{"obj":obj})
  48. else:
  49. obj = models.User_admin.objects.all()
  50. return render(request, "user_info.html",{"obj":obj})
  51.  
  52. def user_detail(request,nid):
  53. '''
  54. 用户详情管理接口
  55. 包括用户信息编辑
  56. :param request:
  57. :param nid:
  58. :return:
  59. '''
  60. if request.method == "POST":
  61. user = request.POST.get("username",None)
  62. pwd = request.POST.get("pwd",None)
  63. email = request.POST.get("email", None)
  64. model = request.POST.get("model", None)
  65. type = request.POST.get("type", None)
  66. group = request.POST.get("group", None)
  67. print(user,pwd,email,model,type,group)
  68.  
  69. models.User_admin.objects.filter(user_id=nid).update(user_name=user,
  70. password=pwd,email=email,model=model,
  71. type=type,user_group_id=group)
  72. return redirect('/cmdb/user_info-%s'%nid)
  73. else:
  74. row = models.User_admin.objects.filter(user_id=nid).first()
  75. return render(request, "user_detail.html",{"row": row})
  76.  
  77. class User_Delete(View):
  78. '''
  79. 删除用户接口
  80. '''
  81. def dispatch(self, request, *args, **kwargs):
  82. result = super(User_Delete,self).dispatch(request,*args,**kwargs)
  83. return result
  84.  
  85. def post(self,request,nid):
  86. models.User_admin.objects.filter(user_id=self.kwargs['nid']).delete()
  87. return redirect('/cmdb/user_info')
  88.  
  89. def get(self,request,nid):
  90. models.User_admin.objects.filter(user_id=self.kwargs['nid']).delete()
  91. return redirect('/cmdb/user_info')
  92.  
  93. class User_Insert(View):
  94. '''
  95. 添加用户接口
  96. '''
  97. def dispatch(self, request, *args, **kwargs):
  98. result = super(User_Insert,self).dispatch(request,*args,**kwargs)
  99. return result
  100.  
  101. def post(self,request):
  102. user = request.POST.get("username", None)
  103. pwd = request.POST.get("pwd", None)
  104. email = request.POST.get("email", None)
  105. model = request.POST.get("model", None)
  106. type = request.POST.get("type", None)
  107. group = request.POST.get("group", None)
  108. print(user, pwd, email, model, type, group)
  109. models.User_admin.objects.create(user_name=user,password=pwd,email=email,model=model,type=type,user_group_id=group)
  110. return redirect('/cmdb/user_insert')
  111.  
  112. def get(self,request):
  113. obj = models.User_admin.objects.all()
  114. return render(request, "user_insert.html", {"obj": obj})
  115.  
  116. def rom(request):
  117. # models.User_Group.objects.create(group_name="CEO",shop_id=1002)
  118. # models.User_admin.objects.create(user_name="alex",password = "admin",email='alex@163.com')
  119. # models.User_admin.objects.create(user_name="kyo", password="admin1")
  120. # models.User_admin.objects.create(user_name="Mary", password="root")
  121. # models.User_admin.objects.create(user_name="admin-2", password="admin2")
  122. # models.User_admin.objects.create(user_name="j-product", password="product")
  123. # models.User_Group.objects.create(group_name="QA",shop_id=1002)
  124. return HttpResponse("Rom")

views.py

cmdb/models  数据操作

  1. from django.db import models
  2. # Create your models here.
  3. class User_admin(models.Model):
  4. '''
  5. user_admin表数据操作
  6. '''
  7. user_id = models.AutoField(primary_key=True)
  8. user_name = models.CharField(max_length=32)
  9. password = models.CharField(max_length=64)
  10. email = models.EmailField(max_length=64)
  11. model = models.IntegerField(null=True)
  12. type_choices = (
  13. (1,"黄金VIP用户"),
  14. (2, "VIP用户"),
  15. (3, "普通用户"),
  16. )
  17. type = models.IntegerField(choices=type_choices,default=3)
  18. user_group = models.ForeignKey('User_Group',to_field="group_id",on_delete=models.CASCADE,default=1) #外键关联user_group表
  19. create_time = models.DateTimeField(auto_now_add=True)
  20. update_time = models.DateTimeField(auto_now=True)
  21.  
  22. class User_Group(models.Model):
  23. '''
  24. user_group表数据操作
  25. '''
  26. group_id = models.AutoField(primary_key=True)
  27. group_name = models.CharField(max_length=64)
  28. shop_id = models.IntegerField(null=True)
  29. create_time = models.DateTimeField(auto_now_add=True)
  30. update_time = models.DateTimeField(auto_now=True)

models

cmdb/urls      cmdb模块下url路径配置

  1. # -*- coding:utf-8 -*-
  2. # Author:D.Gray
  3. from django.urls import path
  4. from django.conf.urls import url,include
  5. from cmdb import views
  6. urlpatterns = [
  7. path('login/', views.login),
  8. path('home/',views.home),
  9. path('orm/', views.rom),
  10. path('user_info/', views.user_info),
  11. url('user_info-(?P<nid>\d+)',views.user_detail),
  12. url('user_delete-(?P<nid>\d+)',views.User_Delete.as_view(),),
  13. path('user_insert/', views.User_Insert.as_view(),),
  14. ]

urls

六、前端页面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>MyPDSS Admin</title>
  6. <style>
  7. body{
  8. margin: 0;
  9. padding: 0;
  10. font-family: "Arial","Microsoft YaHei","微软雅黑";
  11. font-size: 12px;
  12. line-height: 24px;
  13. background: #f8f8f8;
  14. overflow-y: scroll;
  15. }
  16. h1, h2, h3, form, img, ul, ol, li, dl, dt, dd, div, span, p {
  17. padding: 0;
  18. margin: 0;
  19. border: 0;
  20. font-style: normal;
  21. font-weight: normal;
  22. }
  23. .D{
  24. border: 1px solid #cccccc;
  25. height: 235px;
  26. width: 315px;
  27. margin: 45px auto;
  28. padding: 20px;
  29. border-radius: 5px;
  30. }
  31. .D h2{
  32. font-size: 32px;
  33. line-height: 50px;
  34. font-weight: bold;
  35. margin-bottom: 10px;
  36. }
  37. .D input{
  38. display: inline-block;
  39. height: auto;
  40. width: 250px;
  41. margin-bottom: 25px;
  42. padding: 10px 25px 10px 10px;
  43. border-radius: 5px;
  44. border: 1px solid #cccccc;
  45. font-size: 16px;
  46. }
  47. .D-submit{
  48. color: #fff;
  49. background-color: #006dcc;
  50. text-align: center;
  51. line-height: 20px;
  52. font-weight: bold;
  53. cursor: pointer;
  54. }
  55. a{
  56. text-decoration: none;
  57. }
  58. </style>
  59. </head>
  60. <body>
  61. <form rel="/login/" method="post">
  62. <div class="D">
  63. <h2>Please sign in </h2>
  64. <input type="text" name = "user" placeholder="admin ID"/>
  65. <input type="password" name = "password" placeholder="password"/>
  66. <p>
  67. <input type="submit" value="Sign in" class="D-submit" style="height: 45px;width: 95px;padding-left: 15px"/>
  68. <span style="color: red;font-size: 15px">{{ error_mesg }}</span>
  69. </p>
  70. </div>
  71. </form>
  72. </body>
  73. </html>

登录HTML

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>MyPDSS Admin</title>
  6. <style>
  7. .hide{
  8. display: none;
  9. }
  10. body{
  11. margin: 0;
  12. }
  13. a{
  14. text-decoration: none;
  15. color: inherit;
  16. }
  17. .pg-heard{
  18. height: 48px;
  19. background-color: #1b1b1b;
  20. color: #999999;
  21. line-height: 48px;
  22. }
  23. .heard-lift{
  24. display: inline-block;
  25. width: 20%;
  26. font-size: 20px;
  27. text-align: center;
  28. }
  29. .heard-right{
  30. display: inline-block;
  31. float: right;
  32. }
  33. .heard-right span{
  34. margin-right: 20px;
  35. display: inline-block;
  36. }
  37. .heard-right a{
  38. color: #999999;
  39. }
  40. .heard-right a:hover{
  41. color: #3babf7;
  42. cursor: pointer;
  43. }
  44. .menu{
  45. position: fixed;
  46. top: 80px;
  47. left: 0;
  48. bottom: 0;
  49. width: 16%;
  50. min-height: 200px;
  51. overflow: auto;
  52. }
  53. .content{
  54. position: fixed;
  55. top: 80px;
  56. left: 18%;
  57. bottom: 0;
  58. width: 80%;
  59. }
  60. .menu-info{
  61. border: 1px solid #e3e3e3;
  62. width: 80%;
  63. margin-left: 15%;
  64. background-color: #f8f8f8;
  65. border-radius: 5px;
  66. }
  67. .dl{
  68. margin: 20px 30px auto;
  69. font-weight: bold;
  70. }
  71. .dl dt{
  72. font-size: 17px;
  73. color: #3babf7;
  74. margin-bottom: 15px;
  75. }
  76. .dl dd{
  77. font-size: 15px;
  78. color: #999999;
  79. margin-bottom: 5px;
  80. }
  81. dd:hover{
  82. color: firebrick;
  83. cursor: pointer;
  84. }
  85. .tab-menu{
  86. height: 50px;
  87. line-height: 50px;
  88. border-bottom: 1px solid #f5f5f5;
  89. font-size: 18px;
  90. }
  91. #t1,#t2,#t3{
  92. float: left;
  93. width: 10%;
  94. text-align: center;
  95. }
  96. .menu-item{
  97. color: #3babf7;
  98. border-radius: 5px;
  99. border-top: 1px solid #dddddd;
  100. border-left: 1px solid #dddddd;
  101. border-right: 1px solid #dddddd;
  102. border-bottom: 1px solid #f5f5f5;
  103. }
  104. #t1,#t2,#t3:hover{
  105. cursor: pointer;
  106. }
  107. .count div{
  108. float: left;
  109. margin-right: 10px;
  110. color: black;
  111. }
  112. </style>
  113. </head>
  114. <body>
  115. <!--头部标题栏-->
  116. <div class="pg-heard" >
  117. <div style="width: 90%;height: 100%;margin: 0 auto">
  118. <div class="heard-lift">MyPDSS-管理平台</div>
  119. <div class="heard-right">
  120. <span>欢迎 测试管理员</span>
  121. <a href="/cmdb/login/">退出</a>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="pg-content">
  126. <div class="menu">
  127. <div class="menu-info">
  128. <dl class="dl">
  129. <dt>订单管理</dt>
  130. <dd><a>订单列表</a></dd>
  131. <dd><a>退款列表</a></dd>
  132. <dd><a>发货列表</a></dd>
  133. </dl>
  134. <dl class="dl">
  135. <dt>轮播图管理</dt>
  136. <dd><a>首页轮播图</a></dd>
  137. <dd><a>添加轮播图</a></dd>
  138. </dl>
  139. <dl class="dl">
  140. <dt>产品管理</dt>
  141. <dd><a>产品列表</a></dd>
  142. <dd><a>添加产品</a></dd>
  143. <dd><a>共享产品库</a></dd>
  144. </dl>
  145. <dl class="dl">
  146. <dt>类目管理</dt>
  147. <dd><a>类目列表</a></dd>
  148. <dd><a>添加类目</a></dd>
  149. </dl>
  150. <dl class="dl">
  151. <dt>仓库管理</dt>
  152. <dd><a>添加仓库</a></dd>
  153. <dd><a>商品库存</a></dd>
  154. </dl>
  155. <dl class="dl">
  156. <dt>用户管理</dt>
  157. <dd><a href="/cmdb/user_info/">用户列表</a></dd>
  158. <dd><a>添加新用户</a></dd>
  159. <dd><a>发放奖励</a></dd>
  160. </dl>
  161. </div>
  162. </div>
  163. <div class="content">
  164. <div class="tab-menu">
  165. <div class="menu-item" id = "t1">待发货</div>
  166. <div class="" id = "t2">已发货</div>
  167. <div class="" id = "t3">已完成</div>
  168. </div>
  169. {# <div class="count">#}
  170. {# <div>内容一</div>#}
  171. {# <div>内容二</div>#}
  172. {# <div>内容三</div>#}
  173. {# </div>#}
  174. </div>
  175. </div>
  176. <script src="/static/jquery1.12.4.js"></script>
  177. <script>
  178. $(function () {
  179. $(".dl dt").click(function () {
  180. $(this).nextAll().removeClass('hide');
  181. $(this).parent().siblings().find("dd").addClass('hide');
  182. });
  183. $('#t1,#t2,#t3').click(function () {
  184. {#var index = $(this).index();#}
  185. $(this).css('color','#3babf7').siblings().css('color','black');
  186. $(this).addClass('menu-item').siblings().removeClass('menu-item');
  187. {# $(this).addClass('active').siblings().removeClass('active');#}
  188. {# $('.count').children().eq(index).removeClass('hide').siblings().addClass('hide')#}
  189. })
  190. })
  191. </script>
  192. </body>
  193. </html>

后台管理HTML

老男孩Day18作业:后台用户管理的更多相关文章

  1. MVC4做网站后台:用户管理 —用户

    这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...

  2. MVC4做网站后台:用户管理 ——用户组

    用户管理这块包含用户和用户组两部分. 用户组包括浏览 用户组列表,添加.修改.删除用户组等.按照前面思路系统是依据用户组来判断用户权限的,用户组的最主要目的是划分权限.权限这块以后单独在做. 下面实现 ...

  3. MVC4做网站后台:用户管理 ——用户组 2、查看、修改、删除用户组

    查看用户组资料和修改用户组资料结合在一起,在用户组列表双击查看用户组资料,修改资料点保存可以保存用户组,点删除可以删除用户组. 先在UserGroupController中添加 action publ ...

  4. MVC4做网站后台:用户管理 ——用户组 1、添加用户组

    打开控制器UserGroupController 添加Add action /// <summary> /// 添加用户组 /// </summary> /// <ret ...

  5. MVC4做网站后台:用户管理 ——用户组补充

    上次做完发现存在点问题. 1.是类型显示的为数字(如下图): 2.是不能根据类型进行查询. 首先做查询.easyui-datagrid可以添加toolbar. 在datagrid的data-optio ...

  6. 潭州课堂25班:Ph201805201 django 项目 第四十三课 后台 用户管理前后功能实现 (课堂笔记)

    用户的展示,编辑,删除, 把用户显示出来,用户名,员工(是,否), 超级用户(是, 否) 活跃状态,(非活跃示为删除) 在前台要显示该用户所属的用户组,在前台代码中是调用类的属性,所以在 user 的 ...

  7. Python作业之用户管理

    作业 流程图没有画,懒,不想画 readme没有写,懒,不想写.看注释吧233333 #! /usr/bin/env python # -*- coding: utf-8 -*- # __author ...

  8. 老男孩Day16作业:登录、注册、后台管理页面(动态)

    一.作业需求: 1.后台管理主界面(左边菜单框.(全选.反选)框.返回顶部按钮) 2.老男孩登录.注册页面 二.博客地址:https://www.cnblogs.com/catepython/p/93 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理

    系列目录 前言 本节主要是关注者(即用户)和用户组的管理,微信公众号提供了用户和用户组的管理,我们可以在微信公众号官方里面进行操作,添加备注和标签,以及移动用户组别,同时,微信公众号也提供了相应的接口 ...

随机推荐

  1. jetbrains idea/webstorm等(注册,激活,破解码,一起支持正版,最新可用)(2017.3.16更新)【转】

    选择 License server (2017.3.16更新) http://idea.imsxm.com/ 详细请参考:  http://www.cnblogs.com/ys-wuhan/p/584 ...

  2. js监听文本框内容变化

    js监听文本框内容变化 原理很简单,就是在外部先声明一个用来记录input值的变量,然后每0.1秒比较这个值与input的值,如果发生改变,则运行自己的代码,同时改变变量.从而实现对input值改变的 ...

  3. java5 CyclicBarrier同步工具

    CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此 ...

  4. Redis搭建(二):主从复制

    一.引言 Redis有三种集群模式: 第一个就是主从模式 第二种“哨兵”模式,在Redis 2.6版本开始提供,2.8版本稳定 第三种是Cluster集群模式,在Redis 3.x以后的版本才增加进来 ...

  5. 深入剖析SolrCloud(一)

    作者:洞庭散人 出处:http://phinecos.cnblogs.com/ 本博客遵从Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由 ...

  6. 05-nginx定时任务完成日志切割

    目标:每天晚上凌晨一点钟左右把昨天的任务给它切掉,把昨天的日志给它改个名存起来,根据昨天的时间给它改个名存起来,所以要根据日期生成文件名. 也许你不会写bash脚本,但是老师带着你一步一步地来. sh ...

  7. codeforce468DIV2——D. Peculiar apple-tree

    题意给你一颗树,开始时每个结点都有一个小球,每一秒钟每个小球都往上滚一层,当两个球在同一个结点的时候会被消去,如果三个五个七个等在同一个结点的化消去后只剩一个. 分析 这对我来说就TM是英语阅读理解哇 ...

  8. 分布式文件系统MFS(moosefs)实现存储共享

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  9. web Servise(服务)

    服务层:对项目的业务层(业务层调用数据层)的一个包装成对外的服务,是的UI展示可以从单一的WEB扩展为移动端可WINDFROM端等,这叫做面向服务的编程思想. 发布:和网站发布也是一样的. //web ...

  10. OS线程模型

    线程模型 N对1 内核线程 映射 用户进程, 用户进程里可以启多个线程 1对1 内核线程和用户线程 1对1 Linux采用这种方式 N对M 用户线程被抽象为更轻量的线程, 内核线程和轻量的线程对应 进 ...