Django HttpResponse笔记
rmxob 人气:1
#HttpResponse
### 概述:给浏览器返回数据
HttpRequest对象是由django创建的,HttpResponse对象由程序员创建
##用法
### 1:不调用模板,直接返回数据。
例:
```python
def getxob(request):
return HttpResponse('xob')
```
### 2:调用模板
使用render方法
###原型
render(request,templateName[,context])
###作用
结合数据和模板,返回一个完整的HTML页面
###参数
request 请求体对象
templateName 模板对象
context 传递给需要渲染在模板上的数据
###示例
```python
def showregist(requset):
return render(requset,'app1/regist.html')
def Grades(request):
gradelist=grades.objects.all()
return render(request,'app1/index.html',{"grades":gradelist})
```
##属性
### content:表示返回的内容的类型
### charset:编码格式
### status_code:响应得状态码 200;304;404
### content-type:指定输出的MIME类型
例:
```python
def showresponse(request):
res=HttpResponse()
print(res.charset)
print(res.content)
print(res.status_code)
print(res.content_type)
return HttpResponse("张银昭")
```
结果:
utf-8
b''
200
##方法
### init
使用内容实例化HttpResponse
### write(content)
以文件的形式写入
### flush()
以文件的形式输出缓冲区
### set_cookie(key,value)
max_age=None,exprise=None
### delete_cookie(key)
删除cookie
注意:如果删除了不存在的cookie,就什么都没发生
例:
```python
def cookiestext(request):
res=HttpResponse()
cookie=request.COOKIES
res.write("登录
```
主界面
```html
我的
"+cookie["xob"]+"
")#写出cookie #cookie=res.set_cookie("xob","handsome")#先存cookie return res ``` ##子类HttpResponseRedirect 功能:重定向,服务器端的跳转 简写:redirect(to)推荐反向解析 例: ```python from django.http import HttpResponseRedirect from django.shortcuts import redirect def redirect1(request): #return HttpResponseRedirect('/redirect2')#重定向到redirect2页面 return redirect('/redirect2')#上下结果一样,下面是简写 def redirect2(request): return HttpResponse("重定向") ``` ##子类JsonResponse 返回Json数据,一般用于异步请求 __init__(self,data) data 字典对象 注意:Content-type 类型为applaction/json #状态保持 ##概述:Http协议是无状态的,每一次请求都是新的请求,不记得以前的请求 客户端与服务器的一次通信就是一次会话 实现状态保持,在客户端或者在服务端存储会话的数据 ##存储的方式 cookie 所有的数据的存在客户端,不要存敏感的数据(不推荐) session 所有的数据的存在服务端,在客户端用cookie存储session_id 状态保持的目的:在一段时间内跟踪请求者qi的状态,可以跨页面访问请求者的数据 注意:不同的请求者之间不会共享这个数据,与请求者一一对应 ##启用session settings INSTALLED_APPS = [ 'django.contrib.sessions', 默认起用session MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', ##使用session 启用session每个HttpRequest对象都有一个session数据,就是一个类似字典的对象 get(key,default=None):根据键获取session值 clear():清空所有的会话 flush():删除当前的会话,并删除会话的cookie session的key存在cookie里,key的值存在数据库里 #综合 网页的登录与登出 需求:访问网页登录之后,再次访问网页就会记录登录状态。 ```python #views def main(request): #取session username= request.session.get("username","游客") return render(request,'app1/main.html',{"name":username}) def login(request): return render(request,'app1/login.html') def showmain(request): username=request.POST.get('username') #存储session request.session['username']=username print(request.session['username']) return redirect('/main') from django.contrib.auth import logout def quit(request): #清除session # logout(request) # request.session.clear() request.session.flush()#三种方法 return redirect("/main") ``` 简单的登录 ```html欢迎:{{name}}
登录 退出登录 ```加载全部内容