视图函数的主要功能是接收请求、返回响应。在建立应用程序后,先在URL配置文件中加一条配置项指明URL与视图函数的对应关系。然后按照实际需求在视图函数中编写逻辑代码来实现相应的功能,返回一个HTTP响应。
例子:
编写视图函数
应用下的views.py
def test(request):
t ="<h1>测试成功</h1>"
return HttpResponse(t)
URL配置
项目下的urls.py
from django.contrib import admin
from django.urls import path,include
from app.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('test/',test),
]
测试:
Http Response()函数返回一个Http Response对象
Http Response()函数把传给它的文本解析成HTML格式发送给网页
Http Request对象和Http Response对象
Http Request对象
当一个页面被请求时,Django会创建一个包含本次请求信息的Http Request对象,并将这个对象自动传递给与URL对应的视图函数,视图函数的第一个参数request接收这个Http Request对象。Http Request对象常用属性主要包含path、method、GET、POST、FILES、body等
- path:字符串类型,表示请求的路径,不含域名(IP地址)、端口号、查询字符串。例如:当用户在浏览器地址输入http://127.0.0.1:8000/test/goodview/?p=abc时,Http Request对象的path参数存储的字符串只有/test/goodview/。
- method:字符串类型,指的是页面的请求方法,必须用大写形式,例如:GET、POST。
- GET:字典类型,包含GET请求方法中传递的所有参数,形式为{key:value,key2:value2,…},每一项是键(key):值(value)形式。
- POST:字典类型,将页面提交的数据封装成字典对象。提示:如果使用POST请求上传文件,文件信息将包含在FILES属性中,并不包含在POST字典中,只有一般表单字段才包含在POST字典中。
- FILES:字典类型,包含上传文件信息。通过表单上传的文件会保存在该属性中,字典的key是
<input>
标签中name属性的值,value是一个Uploaded File对象。 - FILES只有在请求的方法为POST且
<form>
标签带有enctype="multipart/form-data"的情况下才会提交上传文件的相关数据。否则,FILES将为一个空对象。 - body:字符串类型,表示请求报文的主体。在处理非HTTP形式的报文时非常有用,例如:二进制图片、JSON文件、XML文件等。
- scheme:字符串类型,表示请求协议,一般值为http或https。
- encoding:字符串类型,表示提交的数据的编码方式,如果为None则表示使用默认设置,默认设置为’utf-8’,这个属性是可写的。
- COOKIES:字典类型,是cookie组成的字典。
- session:字典类型,表示当前的会话,这个属性是可写的。
Http Request对象的常用方法介绍
- POST.get():取得POST请求提交的网页表单上的数据。
- Name=request.POST.get(‘name’)
- GET.get():取得网址上查询字符串或者是GET请求方法提交的网页表单上的数据。
- test=request.POST.get(‘test’)
- get_host():获取网址中主机的域名(IP地址)和端口字符串。
- 如要访问的地址是http://127.0.0.1:8000/test/login/?p=11,get_host()将返回127.0.0.1:8000。Ip_port=request.get_host()
- get_full_path():返回网址中的地址path,包括查询字符串,不包括域名(IP地址)和端口。
- 如要访问的地址是http://127.0.0.1:8000/test/login/?p=11,get_full_path()将返回/test/login/?p=11。full_path=request. get_full_path ()
- COOKIES.get():返回cookie对应的值,形式为COOKIES.get(key,defalut)。key是位置参数,表示cookie名字;default是位置参数,如果提供default可选参数,当无此cookie或cookie无值时返回default的值。request.COOKIES.get(‘var’,0)
- get_signed_cookie:返回cookie对应的值,形式为get_signed_cookie(key,default=default_value, salt=’’, max_age=None)。key是位置参数,表示cookie名字;default是位置参数,如果提供default可选参数,当无此cookie或cookie无值时返回default的值;salt是可选命名参数,字符串类型,用这个字符串经过一定算法进行加密,对cookie值提供额外的保护;max_age是可选命名参数,用于检查cookie对应的时间戳,以确保cookie的存在时间值不会超过max_age。
Http Response对象
Http Response对象需要视图函数通过逻辑代码生成,每个视图函数都需要实例化一个Http Response对象,并在最后返回这个对象。
Http Response对象常用属性和方法
-
content:bytes类型,生成的响应内容。
-
charset:编码的字符集,如utf-8。
-
status_code:响应的状态码,例如状态码200表示正常。
-
Http Response():Http Response对象的实例化方法,使用content参数和content-type参数实例化一个Http Response对象,函数格式为Http Response(content=’’, content_type=None, status=200, reason=None,charset=None)。content是位置参数,字符串类型,这些字符串形成Response对象的内容;content_type是可选命名参数,用于填充HTTP响应的Content-Type头部,如果未指定,默认为text/html; charset=utf-8字符串;status是可选命名参数,表示响应的状态码,如状态码200表示成功;reason是可选命名参数,表示HTTP响应短语,如“HTTP/1.0 200 OK”中的OK就是响应短语,起到说明作用;charset是可选命名参数,表示编码方式,如utf-8。
-
write():将 Http Response 实例看作类似文件的对象,往里面添加内容。函数格式为Http Response.write(content)。
-
writelines():将一个包含多个字符串的列表写入响应对象中,不添加分行符。函数格式为writelines(lines)。
-
set_cookie():设置一个cookie。函数格式为set_cookie(key, value=’’,max_age=None, expires=None, path=’/’, domain=None, secure=None,httponly=False)。key是位置参数,表示cookie名字,字符串形式;value是位置参数,cookie的值,字符串形式;max_age是可选命名参数,表示生存周期,以秒为单位,如果不给max_age赋值,这个cookie会延续到浏览器关闭;expires是可选命名参数,表示到期时间;path是可选命名参数,表示生效路径,默认是’/’,代表允许网站的任何URL指向的页面访问cookie,如果设置path=’/index/’,代表只能index页面使用cookie,其他URL指向的页面不能使用cookie;domain是可选命名参数,用于设置跨域的cookie,例如domain=".test.com"将设置一个www.test.com、blogs.teste.com和calendars.test.com等都可读的cookie;secure是可选命名参数,当用HTTPS传输时应设置secure为true;httponly是可选位置参数,如果阻止客户端的Java Script文件访问cookie,可以设置httponly=True。
response = Http Response() response.set_cookie("key", "value",max_age=1000)
-
set_signed_cookie():函数格式为Http Response.set_signed_cookie(key,value, salt=’’, max_age=None, expires=None, path=’/’, domain=None,secure=None, httponly=True),与set_cookie()类似,但是在设置之前将用密钥签名,也就是常说的“加盐处理”。通常与 Http Request.get_signed_cookie()一起使用。你可以使用可选的 salt 参数来增加密钥强度,但需要记住在调用 HttpRequest. get_signed_cookie() 时,也要把使用的salt参数传入,用于解密。
-
delete_cookie():删除cookie中指定的key。函数格式为delete_cookie(key,path=’/’, domain=None),由于cookie的工作方式,path和domain应该与set_cookie()中使用的值相同,否则不能删掉cookie。
-
增加或删除http Response对象头部字段。
response = Http Response() # 增加头部字段 response['name'] = 'Tom' # 删除头部字段 del response['name']
-
flush():清空Http Response实例的内容,函数格式为flush()。
response = Http Response() response.write("<p>这是一行.</p>") reponse.flush()
参考:《Django实战:Python Web经典模块与项目开发》
Http Response()
response.write(“
这是一行.
”)reponse.flush()
参考:《Django实战:Python Web经典模块与项目开发》