Django用户认证auth模块的使用

2024-10-12 10:38:41

1、打开命令行窗口,创建一个新的Django工程,并在该工程下创建应用,命令如下:django-admin startproject djauthcd djauthpython manage.py startapp djlogin

Django用户认证auth模块的使用

2、使用PyCharm开发工具打开djauth工程,打开工程根目录的djauth文件夹的settings.py文件,添加应用,添加模板目录,添加默认登录url,修改部分文件内容如下:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'login.apps.LoginConfig',]TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]LOGIN_URL = '/login/'

Django用户认证auth模块的使用

3、进行数据库迁移,这会生成auth等相关表。创建超级用户,用来登录使用,这样会在auth_user表增加一条记录。python manage.py migratepython manage.py createsuperuser

Django用户认证auth模块的使用Django用户认证auth模块的使用Django用户认证auth模块的使用

4、在工程根目录新建templates文件夹,并在此文件夹新建‘login.html’和‘index.html’文件,内容如下login.html<!DOCTYPE html>&造婷用痃lt;html lang="en"><head> <meta charset="UTF-8"> <title>login</title></head><body> <form action="/login/" method="POST" > {% csrf_token %} <p> 用户名: <input type="text" name = "username"> </p> <p> 密码: <input type="password" name="password"> </p> <p> <input type="submit" value="登录"> {{errormsg}} </p> </form></body></html>index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>index</title></head><body> <p> 欢迎{{user}} </p> <p> <a href="/logout/">注销</a> </p></body></html>

Django用户认证auth模块的使用Django用户认证auth模块的使用

5、在工程根目录的djauth文件夹的urls.py添加到应用的路由,内容如下:from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'',include('login.urls')),]

Django用户认证auth模块的使用

6、在应用文件夹新建urls.py文件,并添加内容如下:from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'login/',views.login), url(r'index/',views.index), url(r'logout/',views.logout),]

Django用户认证auth模块的使用

7、在应用的views.py文件,编写代码如下:from django.contrib import authfrom django.shortcuts import HttpResponsefrom django.contrib.auth.decorators import login_required# Create your views here.def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = auth.authenticate(username=username, password=password) if user: print('ok') auth.login(request,user) return redirect('/index/') else: return render(request,'login.html',{'errormsg':'用户名或密码错'}) return render(request,'login.html')@login_requireddef index(request): return render(request,'index.html',{'user':request.user.username})def logout(request): auth.logout(request) return redirect('/login/')这里主要是三个方法,一个装饰器1auth.authenticate(username=username, password=password) 作用:验证用户名和密码,如果验证成功,得到的是一个用户对象,如果验证失败,得到的是None。 2. auth.login(request, user) 将验证过的用户 赋值给 request.user属性,这样会在session表增加一条记录,键是sessionid,值是用户信息。同时浏览器得到一个cookie,记录sessionid 3. auth.logout(request) 这个代码相当于request.session.flush() 将session数据都删除,并且Cookie也失效。4@login_required在需要登录才能访问的视图函数使用这个装饰器,如果没有登录,会自动转到settings.py配置的LOGIN_URL地址。

Django用户认证auth模块的使用

8、运行服务器python manage.py runserver测试访问网站,一切正常

Django用户认证auth模块的使用Django用户认证auth模块的使用
猜你喜欢