使用Django的认证(authentication)
来源:互联网 发布:win7下nginx配置php 编辑:程序博客网 时间:2024/05/18 23:27
简单使用django的login, logout.(Django1.11.3)
Django提供了
• login:操作表单(form)中的登录然后登录一个用户
• logout:登出一个用户
• logout_then_login:登出一个用户然后重定向这个用户到登录页面
Django 提供以下视图(views)来操作密码修改:
• password_change:操作一个表单(form)来修改用户密码
• password_change_done:当用户成功修改他的密码后提供一个成功提示页面
Django 还包含了以下视图(views)允许用户重置他们的密码:
•password_reset:允许用户重置他的密码。它会生成一条带有一个 token 的一次性使用链接然后发送
到用户的邮箱中。
•password_reset_done:告知用户已经发送了一封可以用来重置密码的邮件到他的邮箱中。
• password_reset_complete:当用户重置完成他的密码后提供一个成功提示页面。
我们创建一个简单的django项目
django-admin startproject bookmarks
在bookmarks里创建app account(账户)
django-admin startapp account我们的app下主要的两个修饰目录, templates, static,app的模板目录, 还有models, view两个文件
因为django的认证视图期望的认证模块默认的存放路径是templates/registration/所以整个tamplates的目录形式
├── account│ ├── dashboard.html├── base.html└── registration ├── logged_out.html └── login.html
static的就不说了, 都应该会配置的.
接下来要设置account的url
#!/usr/bin/env python# coding=utf-8from django.conf.urls import urlfrom . import viewsfrom django.contrib.auth.views import loginfrom django.contrib.auth.views import logoutfrom django.contrib.auth.views import logout_then_loginfrom django.contrib.auth.views import password_changefrom django.contrib.auth.views import password_change_donefrom django.contrib.auth.views import password_resetfrom django.contrib.auth.views import password_reset_donefrom django.contrib.auth.views import password_reset_confirmfrom django.contrib.auth.views import password_reset_completeurlpatterns = [ #url(r'^login/$', views.user_login, name = 'user_login'), url(r'^$', views.dashboard, name = 'dashboard'), url(r'^login/$', login, name='login'), url(r'^logout/$', logout, name = 'logout'), url(r'logout-then-login/$', logout_then_login, name = 'logout_then_login'), url(r'password-change/$', password_change, name = 'password_change'), url('password-change/done/$', password_change_done, name = 'password_change_done'), url(r'password-reset/$', password_reset, name = 'password_reset'), url(r'password-reset/done/$', password_reset_done, name = 'password_reset_done'), url(r'passwored-reset/comfirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$', password_reset_confirm, name = 'password_reset_confirm'), url(r'password-reset/complete/$', password_reset_complete, name = 'password_reset_complete'), ]其中dashborad是要自己写的, dashboard函数如下,当正确的登录后的跳转
from django.shortcuts import renderfrom django.http import HttpResponsefrom django.contrib.auth import authenticate, loginfrom .forms import loginFormfrom django.contrib.auth.decorators import login_required@login_requireddef dashboard(request): return render(request, 'account/dashboard.html', {'section':'dashboard'})
我们还要在settings的文件设置登录或者登出, 登录后的跳转.
from django.core.urlresolvers import reverse_lazy#登录成功后的跳转, dashboard提示登陆成功LOGIN_REDIRECT_URL = reverse_lazy('dashboard')# 重定向登录的URLLOGIN_URL = reverse_lazy('login')#重定向登出的URLLOGOUT_URL = reverse_lazy('logout')
登录的一些页面在这里给出主要部分, url跳转的那些就不写了.
base.html <div id="header"> <span class="logo">Marks</span> {% if request.user.is_authenticated %} <ul class="menu"> <li {% if section == "dashboard" %} class="selected"{% endif %}> <a href="{% url 'dashboard' %}">My dashboard</a> </li> <li {% if sextion == "images" %} class="selected"{% endif %}> <a href="#">Images</a> </li> <li {% if section == "people" %} class="selected"{% endif %}> <a href="#">People</a> </li> </ul> {% endif %} <span class="user"> <!--对request带来的用户的认证--> {% if request.user.is_authenticated %} Hello {{ request.user.first_name }} <!--登出--> <a href="{% url 'logout' %}">Logout</a> {% else %} <a href="{% url 'login' %}">Log-in</a> {% endif %} </span> </div>login.html {% if form.errors %} <p> Your username and password didn't match Please try again </p> {% else %} <p> Please use follow form to login</p> {% endif %} <div class="login-form"> <form action="{% url 'login' %}" method="post"> <!--将form表单定义的字段,在这里展现成<input>--> {{ form.as_p }} {% csrf_token %} <input type="hidden" name="next" value="{{ next }}" /> <input type="submit" value="login" /> </form> </div>loggout.html<h1>Logged out </h1> <p>You have successfully logged out.</p> <!--判断重新登录的--> You can <a href="{% url 'login' %}">log-in again</a>.</p>
我们通过localhost:8000/account/login/来得到登录界面.
登录后的
登出:
这只是django学习的一只小部分, 继续加油.
阅读全文
0 0
- 使用Django的认证(authentication)
- Django-restframework21 Authentication认证类
- 使用Django的认证视图
- django rest framework中认证Authentication
- Django用户认证系统 authentication system
- Django自定义用户认证系统Customizing authentication
- 五 Django 1.5.4 User Authentication 用户认证
- Django用户认证系统 authentication system----登陆访问限制@login_required
- Using the Django authentication system (使用Django默认的权限系统) 阅读批注
- django的用户认证
- 认证 (authentication) 和授权 (authorization) 的区别
- 认证 (authentication) 和授权 (authorization) 的区别
- axis2调用带Authentication认证的webservice
- 认证 (authentication) 和授权 (authorization) 的区别
- 认证 (authentication) 和授权 (authorization) 的区别
- 认证 (authentication) 和授权 (authorization) 的区别
- 认证 (authentication) 和授权 (authorization) 的区别
- 使用gSOAP开发实例(7) 基于HTTPS的基本认证(Basic Authentication)
- 给定一个整数N,那么N的阶乘N!末尾有多少个0
- C++复习第四天 函数重载
- HashMap底层实现原理及面试问题
- 【菜鸟的leetcode之旅】231.power of two
- RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
- 使用Django的认证(authentication)
- 计算一个整数二进制位中1的个数
- 排序算法
- Linux 忘记mysql root 密码 修改mysql 的root权限和密码
- 使用LVS实现负载均衡原理及安装配置详解
- js中变量和jsp中java代码中变量互相访问解决方案
- oracle之DQL,DML以及常用函数(重点)
- Logstash优化心得
- ubuntu16.04中用xrandr设置屏幕分辨率,且重启后不失效