auth认证模块是Django内置集成的一个用户认证模块。css
方法 | 释义 |
---|---|
auth.authenticate() | 认证校验 |
auth.login(request,user) | 封装认证了的user对象 |
auth.logout(request) | 将session数据都删除,且cookie也失效 |
from django.shortcuts import render,redirect from django.contrib import auth from django.contrib.auth.decorators import login_required def login(request): if request.method == "POST": user = request.POST.get("username") pwd = request.POST.get("password") user = auth.authenticate(username=user, password=pwd) # auth认证校验,若是校验成功返回用户名,不然返回空 if user: auth.login(request, user) # 封装认证了的user对象 return redirect("index.html") return render(request, "login.html")
装饰器,未登陆认证时没法访问 index 默认跳转到指定页面,在setting中 配置LOGIN_URL = "跳转的页面名称" 如:html
LOGIN_URL = "login.html"
@login_required def index(request): print("登陆的用户是:",request.user.username) return render(request,"index.html")
MyDjango APP html css images js static index.html login.html migrations views index.py MyDjango settings.py urls.py wsgi.py db.sqlite3 manage.py
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>wellcome</title> </head> <body> {% csrf_token %} <h1>wellcome index web !!!</h1> <a href="login.html">退出</a> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="login.html"> {% csrf_token %} 用户名:<input type="text" name = "username"> 密码: <input type="text" name = "password"> <input type="submit"> </form> </body> </html>
from django.shortcuts import render,redirect,HttpResponse from django.contrib import auth from django.contrib.auth.decorators import login_required def login(request): auth.logout(request) if request.method == "POST": user = request.POST.get("username") pwd = request.POST.get("password") print("用户名:",user,"密码:",pwd) user = auth.authenticate(username=user, password=pwd) # auth认证校验,若是校验成功返回用户名,不然返回空 if user: auth.login(request, user) # 封装认证了的user对象 return redirect("/index.html") else: return HttpResponse("登陆失败,用户或密码错误!") return render(request, "login.html") @login_required def index(request): user = request.user.username print("用户",user,"登陆成功!") return render(request, "index.html",{"user":user})
TEMPLATESpython
'DIRS': [os.path.join(BASE_DIR, 'APP/html/static')]
STATIC_URL = '/static/' STATICFILES_DIRS = (os.path.join(BASE_DIR,"APP/html/static"),) STATIC_ROOT = 'APP/html' LOGIN_URL = "login.html"
from django.contrib import admin from django.urls import path,re_path from APP.views import index urlpatterns = [ path('admin/', admin.site.urls), re_path('^login.html$', index.login), re_path('^index.html$', index.index), ]
生成数据表web
python manage.py makemigrations APP python manage.py migrate
建立超级用户用于登陆测试sql
python manage.py createsuperuser
服务运行django
python manage.py runserver