多语言展示
当前在线:697今日阅读:168今日分享:49

Django用户认证auth模块的使用

Django用户认证auth模块的使用
工具/原料

Django1.11.1

方法/步骤
1

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

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/'

3

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

4

在工程根目录新建templates文件夹,并在此文件夹新建‘login.html’和‘index.html’文件,内容如下login.html            login       

         {% csrf_token %}         

             用户名:                      

         

             密码:                      

         

                          {{errormsg}}         

     
   index.html            index       

         欢迎{{user}}     

     

         注销     

  

5

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

6

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

7

在应用的views.py文件,编写代码如下:from django.contrib import authfrom django.shortcuts import HttpResponse from 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_required def index(request):     return render(request,'index.html',{'user':request.user.username}) def logout(request):     auth.logout(request)     return redirect('/login/')这里主要是三个方法,一个装饰器1 auth.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地址。

8

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

推荐信息