python之路56 dajngo最后一天 csrf跨站请求 auth模块登录注册方法

from django.contrib import auth
from django.contrib.auth.models import User
1.用户注册功能
def register_func(request):

if request.method == &#39;POST&#39;:<br/>
    username = request.POST.get(&#39;username&#39;)<br/>
    password = request.POST.get(&#39;password&#39;)<br/>
    # 1.校验用户是否存在<br/>
    # res = auth.authenticate(request,username=username,此处缺密码)  必须把密码也传进去<br/>
    # print(res)<br/>
    res = User.objects.filter(username=username)<br/>
    if res:<br/>
        return HttpResponse(&#39;用户名已存在&#39;)<br/>
    # 2.注册该用户<br/>
    # User.objects.create(username=username,password=password)  # create方法不可以使用 密码不加密<br/>
    User.objects.create_user(username=username,password=password) # 正常创建 对密码加密<br/>
return render(request,&#39;registerPage.html&#39;)<br/>

2.判断用户名和密码是否正确
def login_func(request):

print(request.user)<br/>
print(request.user.is_authenticated)  # 判断当前用户对象是否已登录<br/>
if request.method == &#39;POST&#39;:<br/>
    username = request.POST.get(&#39;username&#39;)<br/>
    password = request.POST.get(&#39;password&#39;)<br/>
    # 1.校验用户名和密码是否正确(不分开校验) 自己无法比对密码 必须要使用auth模块提供的方法才可以<br/>
    user_obj = auth.authenticate(request,username=username,password=password) # 得到用户对象<br/>
    # print(user_obj.password)<br/>
    if user_obj:<br/>
        # 2.用户登录成功(返回给客户端登录成功的凭证、令牌、随机字符串)<br/>
        auth.login(request,user_obj)   # 自己操作django_session表<br/>
        &#39;&#39;&#39;<br/>
        当执行完上述的操作之后我们就可以通过request.user直接获取到当前登录的用户对象数据<br/>
        &#39;&#39;&#39;<br/>
        return HttpResponse(&#39;登录成功!!!&#39;)

return render(request,‘loginPage.html’)
3.判断用户是否登录

request.user.is_authenticated<br/>

4.获取登录用户对象数据

request.user<br/>

5.校验用户是否登录装饰器
from django.contrib.auth.decorators import login_required

@login_required(login_url=‘/login/’) # 可以明确指定用户没有登录之后跳转到那个地址 局部配置

@login_required # 在settings添加 LOGIN_URL = ‘/login/’ 全局配置
def index_func(request):

return HttpResponse(&#39;index页面,只有登录的用户才可以查看&#39;)<br/>

6.校验原密码是否正确
request.user.check_password(原密码)
7.修改密码
request.user.set_password(新密码)
request.user.save() # 一定要保存
8.退出登录
auth.logout(request)