基于django的视频点播网站开发-step11-后台用户管理功能
用户管理功能,包含用户添加、列表展示、编辑、删除四大功能。下面我们一一揭晓。
用户添加
我们先实现用户添加功能,我们现在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 = User template_name = 'myadmin/user_list.html' context_object_name = 'user_list' paginate_by = 10 q = '' 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_list context['q'] = self.q return context def 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 = User form_class = UserEditForm template_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() 删除之。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
React的组件模式
摘要: 组件是 React 的核心。 原文:React的组件模式 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 组件是 React 的核心,因此了解如何利用它们对于创建优秀的设计结构至关重要。 什么是组件 根据 React 官网的介绍,“组件让你可以将 UI 分割成独立的、可重用的部分,并独立管理每个部分。” 当你第一次安装 npm install react 时,会得到一件事:组件及其 API。与 JavaScript 函数类似,组件接受名为 “props” 的输入并返回 React 元素,该元素描述(声明)用户界面(UI)的外观。这就是为什么 React 被称为声明性 API,因为你告诉它你希望 UI 是什么样子的,而 React 负责其余的工作。 可以把声明式想像成当打的去一个目的地时,只需要告诉司机去哪里,他就会开车把你送到那里。命令式编程正好相反—,你得自己驾车到那里。 组件的 API 当安装 React 后,便可以使用 React 提供的 API,基本可以分成 5 种。 render state props context lifecycle events...
- 下一篇
基于django的视频点播网站开发-step12-后台订阅功能
本讲我们会讲到一些关于发邮件的技术。我们知道,订阅功能是一个很常见的功能,当用户订阅某个网站后,网站会通过后台给用户发送网站最新的一些动向,一般是通过邮件来发送的。当你阅读完本节内容,会对发邮件的流程有一个大概的了解。 配置相关参数 发送邮件是需要配置相关参数的,且每个邮件服务商都有自己的配置值,笔者使用的是163邮箱,在settings.py追加如下配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 邮件配置 EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.163.com' EMAIL_PORT = 465 EMAIL_HOST_USER = 'net936@163.com' EMAIL_HOST_PASSWORD = 'your pwd' 一定要记得配置 EMAIL_BACKEND ,因为django默认配置的是一种模拟发邮件的 BackEnd ,并不能使用,故要替换。 实现发邮件 我们先来写订阅推送的路由, path('subscribe/', views.Subsc...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范