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
- 变量