python django 学习(第四章) 视图 08-1 - 模板06-1

视图 08-1

1.redirect(to)推荐使用反向解析

2.子类JsonResponse
返回json数据,一般用于异步请求

if requst.is_jax():
	a=JsonResponse( { } )
_init_(slef,data)

data:
字典对象 ,content->type类型为application

3.状态保持

状态保持的目的;
在一段时间内,跟踪请求者的状态,可以跨页面访问请求者的数据。
与请求者一一对应。

http协议无状态,每次请求都是一次新的请求,不记得以前请求,客户端与服务器端的一次会话就是一次session,我们想实现状态的保持,就在客户端(cookie)或者服务端存储有关数据,存储的方式有cookie,session。

cookie是所以数据存储在客户端,在客户端用cookie
session,在服务端存储session_id

1.启用session

settings.py

INSTALLED_APPS =[
	'django.contrib.sessions', #默认启用
]

MIDDLEWARE = [

]

2.get(key,default=None) 根据键获取session值

3.clear()  清空所有会话

4.flush() 删除当前会话,并删除会话cookie

5.

视图 09-1(session用法)

欢迎:未登录- 游客


1.配置路由

urls(r'main/$',views.main)
urls(r'login/$',views.login)
urls(r'showmain/$',views.showmain)

2.views.py

def main(request):
	#username = "游客"
	username = request.session.get('name',"游客")  #拿到用户名
	printf("username")
	return render(requst, 'myapp/main.html',{'username':username} )
	
def login(request):
	return render(requst, 'myapp/login.html')

def showmain(request):
	username = request.POST.get('username')  #拿到用户名
	#存储session
	request.session['uesername'] = username
	return redirect('myapp/main/')  #重定向到第一个页面
	
3.新建main.html文件

< html lang = "en">
<head>
	<meta charset ="UTF-8">
	<title> 我的 </titile>
</head>
<body>
	<h1> 欢迎:{{username}} </h1>
	<a herf ="/sunck/login"> </a>
	</body>
</html>

4.新建login.html文件

< html lang = "en">
<head>
	<meta charset ="UTF-8">
	<title> 登录 </titile>
</head>
<body>
	<from action ="/sunck/showmain/" method="post">   #登录以后重新跳转到第一个页面,使用showmain练习重定向
		<input type = "text" name = "username"/>
		<input type = "submit" value = "登录">
	</from>
	</body>
</html>

5.浏览器执行
urls: 

视图 10 -1 (session)

删除session两种办法

1.main.html文件

< html lang = "en">
<head>
	<meta charset ="UTF-8">
	<title> 我的 </titile>
</head>
<body>
	<h1> 欢迎:{{username}} </h1>
	<a herf ="/sunck/login">登录 </a>
	<a herf ="/sunck/quit">退出 </a>
	</body>
</html>

2.配置路由urls.py

urls(r'quit/$',views.quit)

3.views.py

from Django。contrib.auth import logout
def quit(request):
#删除session
	logout(request)  推荐使用
	requst.session.clear()
	requst.session.flush()
	return redirect('myapp/main/')  #重定向到第一个页面

以上不是永久session(半个月),可以设置时间

视图 11 -1 (session)

1.设置session过期时间

set_expiry(value)
#如果不设置过期时间,两个星期过期,它是一个整数,10十秒之后过期,在存储时可以设置

def showmain(request):
	username = request.POST.get('username')  #拿到用户名
	#存储session
	request.session['uesername'] = username
	request.session.set_expiry(10)#0秒之后过期
	return redirect('myapp/main/')  #重定向到第一个页面
	
#时间对象

#0:关闭浏览器时失效

#None永不过期

2.redis保存session

1)安装Redis,pip install django-redis-sessions==0.5.6
2)

  # 使用redis保存session数据
  SESSION_ENGINE = 'redis_sessions.session'
  SESSION_REDIS_HOST = 'localhost'           
  SESSION_REDIS_PORT = 6379                   
  SESSION_REDIS_DB = 0                        
  SESSION_REDIS_PASSWORD = 'sunck'                
  SESSION_REDIS_PREFIX = 'session' 

3)开redis与mysql

net start mysql57
cd到redis目录:redis-server.exe redis.windows.conf
cd 到redis目录底下:redis-cli.exe
auth 'sunck'  

python manage.py 

4)redis 用户登录,keys *

模板01 -1

  1. 变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值