您现在的位置是:首页 > 文章详情

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

日期:2019-02-19点击:457

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

用户添加

我们先实现用户添加功能,我们现在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() 删除之。

原文链接:https://yq.aliyun.com/articles/690768
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章