博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django的用户认证管理,如何使用session(2)
阅读量:4982 次
发布时间:2019-06-12

本文共 2317 字,大约阅读时间需要 7 分钟。

继续使用django用户认证,登陆做好了。

在settings.py里加上:

TEMPLATE_CONTEXT_PROCESSORS ={    "django.contrib.auth.context_processors.auth",      "django.core.context_processors.debug",      "django.core.context_processors.i18n",      "django.core.context_processors.media",      "django.core.context_processors.request",     }LOGIN_URL = '/Login'

1:TEMPLATE_CONTEXT_PROCESSORS 用来解析在页面里嵌入的context解析,auth包含了user的info和method。

2:在每一个不想用户未登录就访问到的页面的view函数上加上这样一个装饰器:

@login_required但是这个语句必须首先导入,语句为:from django.contrib.auth.decorators import login_required

3:LOGIN_URL = '/Login' :让所有加上装饰器的view在未登录状态下返回到login首页。

python代码:

def Login(request):    t = get_template('Login.html')    c = RequestContext(request,locals())    return HttpResponse(t.render(c))def login_view(request):    username = request.POST.get('user')    password = request.POST.get('password')    print username, password    User = authenticate(username = username, password = password)         if User is not None:        if User.is_active:            user_login(request, User)                 return HttpResponseRedirect("/monitorIndex")        else:            err = "a 'disabled account' error message"            return HttpResponseRedirect("/Login")    else:        err = "user is not exist or password is not correct!"        #return HttpResponse(err)        return HttpResponseRedirect("/Login")                                            def logout_view(request):    user_logout(request)    return HttpResponseRedirect("/Login")

注意事项:

1:HttpResponseRedirect("/Login") 和 HttpResponseRedirect("Login")是不一样的,前者直接转到127.0.0.1:8000/Login, 后者是在当前页面后加上/Login. 

2:之间我有一次抓狂,因为没有对import的login和logout重命名,我自己的view也用了login和logout,怎么看代码都没有错误,一句句的测试,就是定位到login(request,user)执行不成功,但是什么原因还是发现不了, 不报错啊!!后来终于在看了很多博客或者知道里都习惯对导入的login和logout重命名,出于好奇,我也重命名下试试,还果真通过了!郁闷之极,这样的低级错误,真让人抓狂。

3:再后来,遇到HttpResponseRedirect执行后,在后台检测收到302的status码,可是前端就是不跳转,或者弹出一个alert的框框,由于弹出的框是一个白框,所以我得不到任何提示消息,只有可能是我自己alert出了一个空值,于是一步步调试,最终定位我发出的ajax请求返回了error,但是errorText其实是空。好吧,去掉ajax,登陆请求未必得ajax,事实上是最好不要用!去掉ajax以后,直接用form进行post,HttpResponseRedirect最终执行了!

4:在我改用django的自带用户认证的时候,最开始没有使用login和logout自带的user登陆退出, 能够进去管理系统,当login 和logout实现后,在使用 出现错误:

我直接在python manage.py shell 打开shell面板进行如下测试,

额,reverse成功。。。。。

 

 

相关资料:

   用户登陆注销注册实现

   

  logout reverse失败

转载于:https://www.cnblogs.com/xiami303/archive/2012/08/15/2640022.html

你可能感兴趣的文章
Linux:重命名
查看>>
Common Subsequence--poj1458(最长公共子序列)
查看>>
Sql Server2000分页存储过程
查看>>
quagga源码分析--通用库thread
查看>>
TJU_SCS_软件测试_homework1——《error impressed me most》
查看>>
样例功能截图
查看>>
log4j2 Filter用法详解
查看>>
关于sql当中的isnull和ifnull的区别
查看>>
08-语言入门-08-5个数求最值
查看>>
mysql常见知识点总结
查看>>
网站添加百度影音的方法
查看>>
Comparsion in JavaScript
查看>>
【转】ubuntu磁盘状态查看(转)--脱离鼠标操作
查看>>
hdu 1237 简单计算器 栈
查看>>
当我们在说微服务治理的时候究竟在说什么
查看>>
CAS(Compare And Swap)
查看>>
JAVA中String类以及常量池和常用方法
查看>>
java
查看>>
Oracle 数据库导入、导出
查看>>
批量修改 表结构
查看>>