Django视图函数

Django视图函数-快速上手

视图函数的主要功能是接收请求、返回响应。在建立应用程序后,先在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),
]

测试:

image-20211030121925889

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经典模块与项目开发》
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小旺不正经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值