一、HttpRequest对象
概述
服务器接收到客户端请求后,系统自动创建的对象(视图函数第一个参数)。-
属性
path 请求路径 method 请求方法 GET get 请求参数 POST post 请求参数 FILES 上传文件 COOKIES cookie 对象【会话技术】 SESSION session 对象【会话技术】
-
GET 请求
# 参数获取 name = request.GET.get('name')
-
POST 请求
# 参数获取 name -request.POST.post('name')
二、HttpResponse对象
概述
用于返回数据给客户端的。-
HttpResponse()
response = HttpResponse('hello') response = HttpResponse('hello',status=200)
-
render()
response = render(request,'index.html') response = render(request,'index.html',status=301)
-
redirect()
response = redirect('/meituan/')
-
JsonResponse()
stu = {'name':'zhangsan','age':20} response = JsonResponse(stu)
三、会话技术
-
概述
HTTP 无状态 [请求一次,返回对应响应,称为一次会话] 会话技术:实现状态保持 为什么要使用会话保持? 在一定的时间段内或操作中,跟踪请求者状态![服务器就知道你是谁]
类比:github HTTP,每次操作都需要输入用户名和密码 [服务器才知道你是谁]
-
会话技术
cookie:客户端会话技术 session:服务器会话技术(要依托cookie) token:手动session
四、会话技术cookie
# 注册
```
1、urls
url(r'^register/$',views.register,name=register)
2、views
def register(request):
if request.method == 'POST':# 注册操作
#获取客户端传递的数据
username = request.POST.get('username')
...
# 保存到数据库
user = User()
user.u_name =username
...
user.save()
# 注册成功,直接重定向 首页
response = redirect('/meituan/')
# 设置cookie
response.set_cookie('username',user.u_name)
# return HttpResponse('{}注册成功!'.format(username))
return response
elif request.method == 'GET':# 获取注册页面
return HttpResponse
```
```
register.html # 注册页面
<form action="{% 'meituan:register %}" method=“post”>
{% csrf_token %}
# 注册的东西
<p>
<input type='text' name='user' placeholder='用户名'>
</p>
</form>
```
# 登录
```
1、urls
url(r'^login/$',views.login,name=login)
2、views
def login(request):
if request.method=='POST':# 登录操作
uesrname = request.POST.get('username')
password = request.POST.get('password')
# 根据用户名和密码 去数据库中找
# 能找到,登录成功
# 找不到,登录失败
users = User.objects.filter(u_name=username,u_password=password)
if user.exists(): # 存在
user = users.first()
# 登录成功,直接重定向 首页
response = redirect('/meituan/')
#设置cookie
response.set_cookie('username',user.u_name)
return HttpResponse('{}登录成功'.format(username))
else: # 不存在
return HttpResponse('登录失败')
elif request.method == 'GET':# 获取登录页面
return render(request,'login.html')
return
```
```
login.html # 注册页面
<form action="{% 'meituan:login %}" method=“post”>
{% csrf_token %}
# 登录的东西
<p>
<input type='text' name='user' placeholder='用户名'>
</p>
...
</form>
```
# 退出登录
```
1、url
url(r'logout/$',views.logout,name='logout')
2、views
def logout(request):
# 删除cookie
response = redirect('/meituan/')
response.delete_cookie('username')
return response
```
# 关于
```
1、url
url(r'about/$',views.about,name='about')
2、views
def about(request):
# 获取cookie
username = request.COOKIES.get('username')
return render(request,'about.html',context={'username':username})
```