日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于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 = 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-后台用户管理功能...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。