用户登录与登出

1.在 views 中添加登录方法

在 Django 中,我们用 AuthenticationForm 来处理用户登录信息(即填写用户名和密码),用 authenticate 来验证登录信息是否和已存在用户相对应,最后用 login 方法来进行用户登录的操作。

from django.shortcuts import render, redirect

# 填写用户登录信息的表单,可处理用户名和密码
from django.contrib.auth.forms import AuthenticationForm

# 登录和校验模块
from django.contrib.auth import login, authenticate


# 登录
def user_login(request):
    context = {}
    # 登录信息表单
    if request.method == 'GET':
        form = AuthenticationForm

    # 处理登录数据
    if request.method == 'POST':
        # 获取用户填写的登录信息,并进行校验
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            # 登录操作
            login(request, form.get_user())
            return redirect(to='user_info')
                
    context['form'] = form
    return render(request, 'loginPage.html', context)


# 用户个人信息
def user_info(request):
    return render(request, 'userInfo.html')

2.分配 url

Django 的登出模块 logout 模块直接在 url 层引用即可使用

from django.conf.urls import url
from django.contrib import admin

from myApp.views import user_login, user_info

# 登出模块
from django.contrib.auth.views import logout

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    # 登录页
    url(r'^user_login/$', user_login, name='user_login'),

    # 个人信息页
    url(r'^user_info/$', user_info, name='user_info'),

    # 登出, next_page 表示跳转到 user_login
    url(r'^logout/$', logout,{'next_page': '/user_login'}, name='logout'),
]

3.编写前端

登录页 loginPage.html:


{% load staticfiles %}



    login



    
    
{% for field in form %} {{ field.label }} {{ field }}
{% endfor %} {% csrf_token %} {% if form.errors %}

该用户不存在或密码错误,请正确输入

{% endif %}

用户个人信息页 userInfo.html:


{% load staticfiles %}



    user_info


    

用户名: {{ request.user.username }}

4.测试

打开:http://127.0.0.1:8000/user_login/ ,可以看到登录界面:

用户登录与登出_第1张图片

输入用户名和账号密码:

用户登录与登出_第2张图片

再点击退出,就能回到登陆页。

如果填写了错误的用户名或密码,则会返回错误信息:

用户登录与登出_第3张图片

你可能感兴趣的:(用户登录与登出)