Cookie 机制:正统的Cookie 分发是通过扩展HTTP 协议来实现的,服务器通过在HTTP 的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的Cookie。然而纯粹的客户端脚本如JavaScript 或者VBScript也可以生成Cookie。而Cookie 的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的Cookie,如果某个Cookie 所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie 附在请求资源的HTTP 请求头上发送给服务器。
def login_action(request): if request.method=='POST': username=request.POST.get("username","") password=request.POST.get("password","") if username=="admin" and password=="admin123": response=HttpResponseRedirect("/event_manage/") response.set_cookie('user',username)#创建cookie return response else: # return HttpResponse("用户名或密码错误") return render(request,'index.html', {'error': 'username or password error!'}) def event_manage(request): username=request.COOKIES.get('user', '') # 读取浏览器cookie return render(request=request,template_name="event_manage.html",context={"user":username})
当用户登录成功后,在跳转到event_manage 页面时,通过set_cookie()方法来添加浏览器Cookie。这里给set_cookie()方法传了三个参数,第一个参数“user”是用于表示写入浏览器的Cookie 名,第二个参数username 是由用户在登录页上输入的用户名,第三个参数3600 用于表示该cookie 信息在浏览器中的停留时间,默认以秒为单位。
而在event_manage 视图函数中,通过request.COOKIES 来读取Cookie 名为“user”的值。并且通过render将和event_manage.html 页面一起返回给客户端浏览器。
修改.../templates/event_manage.html 页面,添加<div>标签来显示用户登录的用户
<html> <head> <title>Event Manage Page</title> </head> <body> <div style="float:right;"> <a>嘿!{{user}} 欢迎</a><hr/> </div> <h1>Login Success!</h1> </body>
效果如下: