慕课网-Django入门到进阶-更适合Python小白的系统课程-第9章dashboard后端的搭建与开发-9-7dashboard搭建与管理员模块开发(7)

第9章 dashboard 后端的搭建与开发

9-7 dashboard 搭建与管理员模块开发(7)

1.在项目 vedio 下目录 templates/dashboard/auth,修改文件 admin.html

<%inherit file="../base.html" />
<%! from django.shortcuts import reverse %>
<%def name="content()">
<h1>管理员模块</h1>
<table class="table">
    <thead>
        <tr>
            <th>用户名</th>
            <th>状态</th>
            <th>创建时间</th>
            <th>编辑</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            % for user in users:
                <td>${user.username}</td>
                <td>${user.is_superuser}</td>
                <td>${user.date_joined}</td>
                % if user.is_superuser:
                    <td><a href="${reverse('admin_update_status')}?status=off">取消管理员</a></td>
                % else:
                    <td><a href="${reverse('admin_update_status')}?status=on">成为管理员</a></td>
                % endif
            % endfor
        </tr>
    </tbody>
</table>
</%def>

2.在项目 vedio 下目录 app/dashboard/views,修改文件 auth.py

# coding:utf-8

from django.views.generic import View
from django.shortcuts import redirect, reverse
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.models import User
from app.libs.base_render import render_to_response

class Login(View):
    TEMPLATE = 'dashboard/auth/login.html'

    def get(self, request):
        if request.user.is_authenticated:
            return redirect(reverse('dashboard_index'))
        data = {'error': ''}
        return render_to_response(request, self.TEMPLATE, data=data)

    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username, password)

        data = {}
        exists = User.objects.filter(username=username).exists()
        data['error'] = '没有该用户'
        if not exists:
            return render_to_response(request, self.TEMPLATE, data=data)

        user = authenticate(username=username, password=password)
        if not user:
            data['error'] = '密码错误'
            return render_to_response(request, self.TEMPLATE, data=data)
        if not user.is_superuser:
            data['error'] = '你无权登录'
            return render_to_response(request, self.TEMPLATE, data=data)
        login(request, user)
        return redirect(reverse('dashboard_index'))

class Logout(View):
    def get(self, request):
        logout(request)
        return redirect(reverse('dashboard_login'))

class AdminManger(View):
    TEMPLATE = 'dashboard/auth/admin.html'
    def get(self, request):
        users = User.objects.all()
        data = {'users': users}
        return render_to_response(request, self.TEMPLATE, data)

class UpdateAdminStatus(View):
    def get(self, request):
        status = request.GET.get('status', 'on')
        _status = True if status == 'on' else False
        request.user.is_superuser = _status
        request.user.save()
        return redirect(reverse('admin_manger'))

3.测试

4.在项目 video 下目录命令行窗口执行生成多个超级管理员(xiaoming、xiaogang、xiaowang)

python manage.py createsuperuser

5.在项目 vedio 下目录 templates/dashboard/auth,修改文件 admin.html

<%inherit file="../base.html" />
<%! from django.shortcuts import reverse %>
<%def name="content()">
<h1>管理员模块</h1>
<table class="table">
    <thead>
        <tr>
            <th>用户名</th>
            <th>状态</th>
            <th>创建时间</th>
            <th>编辑</th>
        </tr>
    </thead>
    <tbody>
        % for user in users:
            <tr>

                <td>${user.username}</td>
                <td>${user.is_superuser}</td>
                <td>${user.date_joined}</td>
                % if user.is_superuser:
                    <td><a href="${reverse('admin_update_status')}?status=off">取消管理员</a></td>
                % else:
                    <td><a href="${reverse('admin_update_status')}?status=on">成为管理员</a></td>
                % endif
            </tr>
        % endfor

    </tbody>
</table>
</%def>

6.在项目 vedio 下命令行窗口启动服务,测试

7.在项目 vedio 下目录 templates/dashboard/auth,修改文件 admin.html

<%inherit file="../base.html" />
<%! from django.shortcuts import reverse %>
<%def name="content()">
<%
    prev_page = '{}?page={}'.format(reverse('admin_manger'), page_num - 1)
    next_page = '{}?page={}'.format(reverse('admin_manger'), page_num + 1)
%>
<h1>管理员模块</h1>
% if page_num > 1:
    <a href="${prev_page}">上一页</a>
% endif
% if page_num < total:
    <a href="${next_page}">下一页</a>
% endif
<table class="table">
    <thead>
        <tr>
            <th>用户名</th>
            <th>状态</th>
            <th>创建时间</th>
            <th>编辑</th>
        </tr>
    </thead>
    <tbody>
        % for user in users:
            <tr>

                <td>${user.username}</td>
                <td>${user.is_superuser}</td>
                <td>${user.date_joined}</td>
                % if user.is_superuser:
                    <td><a href="${reverse('admin_update_status')}?status=off">取消管理员</a></td>
                % else:
                    <td><a href="${reverse('admin_update_status')}?status=on">成为管理员</a></td>
                % endif
            </tr>
        % endfor
    </tbody>
</table>
</%def>

8.在项目 vedio 下目录 app/dashboard/views,修改文件 auth.py,添加分页

# coding:utf-8

from django.views.generic import View
from django.shortcuts import redirect, reverse
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.models import User
from django.core.paginator import Paginator
from app.libs.base_render import render_to_response

class Login(View):
    TEMPLATE = 'dashboard/auth/login.html'

    def get(self, request):
        if request.user.is_authenticated:
            return redirect(reverse('dashboard_index'))
        data = {'error': ''}
        return render_to_response(request, self.TEMPLATE, data=data)

    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username, password)

        data = {}
        exists = User.objects.filter(username=username).exists()
        data['error'] = '没有该用户'
        if not exists:
            return render_to_response(request, self.TEMPLATE, data=data)

        user = authenticate(username=username, password=password)
        if not user:
            data['error'] = '密码错误'
            return render_to_response(request, self.TEMPLATE, data=data)
        if not user.is_superuser:
            data['error'] = '你无权登录'
            return render_to_response(request, self.TEMPLATE, data=data)
        login(request, user)
        return redirect(reverse('dashboard_index'))

class Logout(View):
    def get(self, request):
        logout(request)
        return redirect(reverse('dashboard_login'))

class AdminManger(View):
    TEMPLATE = 'dashboard/auth/admin.html'
    def get(self, request):
        users = User.objects.all()
        page = request.GET.get('page', 1)
        p = Paginator(users, 2)
        total_page = p.num_pages
        if int(page) <= 1:
            page = 1
        current_page = p.get_page(int(page)).object_list
        data = {'users': current_page, 'total': total_page, 'page_num': int(page)}
        return render_to_response(request, self.TEMPLATE, data)

class UpdateAdminStatus(View):
    def get(self, request):
        status = request.GET.get('status', 'on')
        _status = True if status == 'on' else False
        request.user.is_superuser = _status
        request.user.save()
        return redirect(reverse('admin_manger'))

9.测试

posted on 2020-02-22 06:15  herisson_pan  阅读(7)  评论(0)    收藏  举报

导航