用户管理功能,包含用户添加、列表展示、编辑、删除四大功能。下面我们一一揭晓。

用户添加

我们先实现用户添加功能,我们现在urls.py下添加相关的路由

path('user_add/', views.UserAddView.as_view(), name='user_add'),
path('user_list/', views.UserListView.as_view(), name='user_list'),
path('user_edit/<int:pk>',views.UserEditView.as_view(), name='user_edit'),
path('user_delete/', views.user_delete, name='user_delete'),

用户添加的视图类是UserAddView

class UserAddView(SuperUserRequiredMixin, generic.View):def get(self, request):form = UserAddForm()return render(self.request, 'myadmin/user_add.html', {'form': form})def post(self, request):form = UserAddForm(data=request.POST)if form.is_valid():user = form.save(commit=False)password = form.cleaned_data.get('password')user.set_password(password)user.save()return render(self.request, 'myadmin/user_add_success.html')return render(self.request, 'myadmin/user_add.html', {'form': form})

这是一个普通的视图类,通过get()和post()来完成用户添加的功能,get里面负责页面的展示,post里面负责逻辑处理。在get中,初始化form为UserAddForm,因为添加的用户是有类别的,所以我们在UserAddForm中应用了is_staff字段来表示管理员。在post中,我们通过user.set_password(password)来设置新密码。user.save()来保存记录到数据库。保存成功后会跳转到myadmin/user_add_success.html页面。

用户列表

用户添加成功后,当你点击用户列表,即可看到用户列表数据,用户列表我们配置的路由是

path('user_list/', views.UserListView.as_view(), name='user_list'),

使用的是UserListView视图类,该类是继承自ListView通用视图类的。因此 只需要我们简单的配置几下,就能实现列表功能。UserListView代码如下

class UserListView(AdminUserRequiredMixin, generic.ListView):model = Usertemplate_name = 'myadmin/user_list.html'context_object_name = 'user_list'paginate_by = 10q = ''def get_context_data(self, *, object_list=None, **kwargs):context = super(UserListView, self).get_context_data(**kwargs)paginator = context.get('paginator')page = context.get('page_obj')page_list = get_page_list(paginator, page)context['page_list'] = page_listcontext['q'] = self.qreturn contextdef get_queryset(self):self.q = self.request.GET.get("q", "")return User.objects.filter(username__contains=self.q).order_by('-date_joined')

我们知道ListView是有多个回调函数的,这里就是通过get_context_data()和get_queryset()回调函数来实现列表中的功能的。在get_context_data()中实现了列表分页功能,在get_queryset()中实现了搜索功能。

配置的模板是myadmin/user_list.html,显示效果如下

用户编辑

当你点击编辑按钮的时候,即可进入编辑页面。对应的路由是

path('user_edit/<int:pk>',views.UserEditView.as_view(), name='user_edit'),

即UserEditView

class UserEditView(SuperUserRequiredMixin, generic.UpdateView):model = Userform_class = UserEditFormtemplate_name = 'myadmin/user_edit.html'def get_success_url(self):messages.success(self.request, "保存成功")return reverse('myadmin:user_edit', kwargs={'pk': self.kwargs['pk']})

同样是继承自UpdateView,仅需要配置好model、form_class、template_name即可,简单至极。

效果如下

用户删除

当你点击删除按钮的时候,会弹出确认框让你删除。然后网站通过ajax调用user_delete来实现真正的删除操作,其中,ajax代码位于static/js/myadmin/user_list.js

真正的删除函数是user_delete,下面是它的真面目

@ajax_required
@require_http_methods(["POST"])
def user_delete(request): user_id = request.POST['user_id']instance = User.objects.get(id=user_id) instance.delete()return JsonResponse({"code": 0, "msg": "success"})

首先获取到当前用户的实例,然后通过 instance.delete() 删除之。

基于django的视频点播网站开发-step11-后台用户管理功能...相关推荐

  1. 基于django的视频点播网站开发-step10-后台评论管理功能...

    本讲中,我们会讲到评论管理功能,数据库中的每一条是来自用户的评价,因此后台中的评论管理只有评论列表和评论删除功能,没有增加评论和编辑评论. 照例我们先添加评论管理的相关路由 path('comment ...

  2. 基于django的视频点播网站开发-step12-后台订阅功能

    本讲我们会讲到一些关于发邮件的技术.我们知道,订阅功能是一个很常见的功能,当用户订阅某个网站后,网站会通过后台给用户发送网站最新的一些动向,一般是通过邮件来发送的.当你阅读完本节内容,会对发邮件的流程 ...

  3. 基于django的视频点播网站开发-step12-后台订阅功能...

    本讲我们会讲到一些关于发邮件的技术.我们知道,订阅功能是一个很常见的功能,当用户订阅某个网站后,网站会通过后台给用户发送网站最新的一些动向,一般是通过邮件来发送的.当你阅读完本节内容,会对发邮件的流程 ...

  4. 基于django的视频点播网站开发-step2-搭建环境

    本讲中,带领大家搭建开发环境.我们会依次安装python.pip.django.mysql和其他的一些必要类库. 安装python 安装 Python 非常简单,去 Python 官方网站 找到 Py ...

  5. 基于python的电商网站建设_基于Django的电子商务网站开发

    Python的安装 目前市场上Python 2.X系列与Python 3.X系列共存的现象.读者可以安装Python 2.X系列或者Python 3.X系列.如果开发的目的是基于原有Python 2. ...

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

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

  7. 基于Django手机销售网站

    1,项目功能: (1)商品分类:该模块中,用户可以根据商品的分类信息进行商品检索. (2)商品预览:该模块主要实现商品的详细信息浏览功能. (3)购物车:用户可以把自己喜欢的商品添加到购物车中. (4 ...

  8. php动态网站开发论文,浅谈《基于PHP的动态网站开发》课程的项目案例设计

    电子论文 浅谈<基于PHP的动态网站开发>课程的项目案例设计 时间:2020年05月25日 所属分类:电子论文 点击次数: [摘要]在教学资源建设中,案例设计建设是非常重要的资源之一.运用 ...

  9. 【Django】第一课 基于Django超市订单管理系统开发

    概念 django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构. 项目搭建 打开pycharm开发软件,打开开发软件的内置dos窗口操作命 ...

最新文章

  1. linuxpython23同时_linux上安装python3同时保留python2
  2. Eclipse 中 Maven 项目默认JDK版本为1.5 的解决方法
  3. 设置 webbrowser 控件的表现形式,可以像你本机的IE浏览器一样
  4. CCF201612-2 工资计算(100分)
  5. 结合源码探讨Android系统的启动流程
  6. 【LeetCode】【字符串】题号:383. 赎金信
  7. Ajax中的get和post两种请求方式的异同
  8. 为什么在 Windows 7系统下无法显示 STEP 7 MicroWin SP9的帮助文件?
  9. DM7数据库安装图文教程
  10. 欧姆龙PLC CP1H与变频器通信要点总结
  11. python爬取二手房信息_使用Scrapy爬取链家二手房信息
  12. M32S 串口摄像头的技术应用
  13. Android-高德api使用常见错误
  14. 作业帮-后台开发岗 面经
  15. 学习编程可以从事哪些行业
  16. Photoshop如何切图
  17. Advanced Zip Password Recovery下载
  18. 和成熟男人谈恋爱是什么感觉
  19. 如何选择网络任务才能够轻松赚钱?(快营通分享)
  20. 尝试用python解概率题,并祝大小朋友儿童节快乐

热门文章

  1. pid调节软件_非常实用的PID算法和PID控制原理
  2. python中比较重要的几个函数_Python 几个重要的内置函数 python中的内置函数和关键字需要背过吗...
  3. 机器学习之 weka学习(二)算法说明
  4. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
  5. Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
  6. LIS路径记录(UVA481)
  7. css纯字母或者字母换行显示
  8. POJ 1151 Atlantis 线段树+扫描线
  9. Apache启动错误:could not bind to address[::]:443
  10. item-设置可见性