分别是认证,登入,注销的功能

authenticated():验证是否登录

user = authenticate(username='someone',password='somepassword')

login():登入,并且创建cookie,session

login(request, user)

logout():注销,清除session

logout(request,)

user对象方法

user对象的is_authenticated()方法

def my_view(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

创建用户方法

from django.contrib.auth.models import User
user = User.objects.create_user(username='',password='',email='')

修改密码

user = User.objects.get(username='')
user.set_password(password='')
user.save

 

示例一:修改密码

@login_required
def set_password(request):
user = request.user
state = None
if request.method == 'POST':
old_password = request.POST.get('old_password', '')
new_password = request.POST.get('new_password', '')
repeat_password = request.POST.get('repeat_password', '')
if user.check_password(old_password):
if not new_password:
state = 'empty'
elif new_password != repeat_password:
state = 'repeat_error'
else:
user.set_password(new_password)
user.save()
return redirect("/log_in/")
else:
state = 'password_error'
content = {
'user': user,
'state': state,
}
return render(request, 'book/set_password.html', content)

示例二:ajax提交登录并验证

def log_in(request):

    if request.is_ajax():
username=request.POST.get("username")
password=request.POST.get("password")
valid_code=request.POST.get("valid_code") ajax_response={"user":None,"errors":""} if valid_code.upper()==request.session.get("valid_code").upper():
user=authenticate(username=username,password=password) # 用户验证 if user:
login(request,user) # 执行后,相当于设定了cookie和session
ajax_response["user"]=user.username
else:
ajax_response["errors"]="用户名或者密码错误" else:
ajax_response["errors"]="验证码错误" return HttpResponse(json.dumps(ajax_response)) return render(request,"login.html")

django也为我们设计好了一个用于此种情况的装饰器:login_requierd(),实现跟is_authenticated()同样功能

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
...

若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' (这个值可以在settings文件中通过LOGIN_URL进行修改)。并传递 当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

 

最新文章

  1. 通过监控线程状态来保证socket服务器的稳定运行
  2. css设置height 100%
  3. Stanford机器学习---第九讲. 聚类
  4. 车辆管理系统之搭建框架 添加必要的数据 安装svn(二)
  5. JAVA GUI学习 - JPopupMenu鼠标右键菜单组件学习
  6. VS2010/MFC设置对话框控件的Tab顺序
  7. 文件描述符和exec() close_on_exec
  8. Android SQLite 加密模块实现入门
  9. p1221网络布线(最小生成树 Prim(普里母)算法) p1222 Watering Hole
  10. python识别验证码——PIL,pytesser,pytesseract的安装
  11. ●UVa 11346 Probability
  12. console对象探究
  13. 关闭 synactive guixt. 在sap gui的右上角一个标志里,将 active guixt 选项去掉即可。
  14. 使用PROC TRANSPOSE过程步对数据集进行转置时如何保持日期变量的时间顺序
  15. 初学JDBC的一些总结(一)
  16. JSON的一些小结
  17. 冲刺博客NO.8
  18. MongoDB 创建索引及其他
  19. hive 创建orc表
  20. c#随机生成中文姓名

热门文章

  1. fiddler抓包工具的基本使用
  2. 【廖雪峰老师python教程】——map/reduce
  3. 使用JDK的keytool生成Android签名证书
  4. 机器学习 (三) 逻辑回归 Logistic Regression
  5. ipfs01
  6. Android stateMachine分析
  7. ASP.NET CORE 2.0 文档中文正式版已经出来了
  8. 会话描述协议(SDP)介绍
  9. WEB-INF目录
  10. el-checkbox根据是否被选中执行不同的操作