基于django的视频点播网站开发-step8-后台登录功能

442 阅读1分钟

从本讲起,我们会介绍后台管理系统的开发,后台管理,主要是对数据库中的数据进行增、删、改、查的操作,满足网站管理员对网站的管理与维护的需求。

其实,django自带的也有一个后台管理系统(/admin),但是自带的后台非常简陋,无论是界面,还是功能上,都无法满足用户的需求,因此,我们自己开发了一套后台管理系统。

demo地址

测试账号: admin123

密码: admin123

后台管理属于一个单独的模块,我们创建一个新的应用,命名为myadmin

python3 manage.py startapp myadmin

好,之后的功能都是基于myadmin来实现的。

因为前面我们已经创建了user模块,所以此处的登录功能是基于之前的user模块来实现的。

首先在myadmin/urls.py中添加登录和登出的路由

from django.urls import path
from . import views

app_name = 'myadmin'
urlpatterns = [
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
]

我们来写login函数

def login(request):
    if request.method == 'POST':
        form = UserLoginForm(request=request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)

            if user is not None and user.is_staff:
                auth_login(request, user)
                return redirect('myadmin:index')
            else:
                form.add_error('', '请输入管理员账号')
    else:
        form = UserLoginForm()
    return render(request, 'myadmin/login.html', {'form': form})

这里我们使用了user模型中的一个字段is_staff,用它来表示是否是管理员,所以通过if user is not None and user.is_staff来判断管理员,如果是管理员,则auth_login登录并redirect跳转到主页。

下面我们来实现logout函数

def logout(request):
    auth_logout(request)
    return redirect('myadmin:login')

登出后,直接跳转到login页面。

效果展示