session作用:
存放在服务器端,通过sessionID保存识别用户的登录状态,同时与之对应的是cookie,Cookies是属于Session对象的一种,cookie位于客户端,session可通过cookie保存在浏览器中,从而能够进行对应的sessionID的传输。同时,保存在cookie中的session也是不安全,别人可以通过cookie保存的信息进行伪造的cookie的操作进行访问服务器端。
当然我们可以利用django中request对象的session来保存一些值,以便直接在前端中使用。
例如:我们登录成功时将用户名保存到session中,
if
TUser.objects.filter(
username
=
username,
password
=
password).exists()
==
True
:
#过滤
#return HttpResponse("登录成功!")#登录成功
request.session[
"username"
]
=
username
而我们在前端代码中也能直接调用
欢迎访问:{{request.session.username}}
<a
href
=
"/user/loginout"
>
退出
</a>
效果如下:
同时我们可以在view.py中的其他方法中加入如下代码:
if
not
request.session.has_key(
"username"
)
or
not
request.session[
"username"
]:
return
HttpResponseRedirect(
"/user/login"
)
即如果没有登录或者没有登录成功的话,转入上述页面。
但这样的话,我们就要在大多数页面跳转方法里都要加上上述的代码,因此我们可以引入中间件的概念。
对应目录下新建middleware文件夹,其文件夹下新建sys.py文件:
sys.py:
from
django.utils.deprecation
import
MiddlewareMixin
from
django.http
import
HttpResponseRedirect
#中间件
class
loginMiddleWare
(
MiddlewareMixin
):
def
process_request
(
self
,
request
):
if
request.path
!=
"/user/login"
and
request.path
!=
"/user/code"
:
if
not
request.session.has_key(
"username"
)
or
not
request.session[
"username"
]:
return
HttpResponseRedirect(
"/user/login"
)
上述代码意为除了/user/login和/user/code都会访问session以判断是否登录,否则就回到登录页面。
同时需要在settings.py文件下对应项中新增红框代码:
'aisystem.middleware.sys.loginMiddleWare'
即可实现中间件功能,其余函数就不用再重复写相同代码。