Django框架中视图的用法

 更新时间:2022年06月10日 15:56:28   作者:springsnow  
这篇文章介绍了Django框架中视图的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

视图层

一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。

响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片...

无论视图本身包含什么逻辑,都要返回响应。代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中。

每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应。

视图层中有两个重要的对象:请求对象(request)与响应对象(HttpResponse)。

一、请求对象: HttpRequest 对象(简称 request 对象)

以下介绍几个常用的 request 属性。

1、GET

数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP GET 的所有参数。

有相同的键,就把所有的值放到对应的列表里。

取值格式:对象.方法。

get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

def runoob(request):
    name = request.GET.get("name")
    return HttpResponse('姓名:{}'.format(name))

2、POST

数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP POST 的所有参数。

常用于 form 表单,form 表单里的标签 name 属性对应参数的键,value 属性对应参数的值。

取值格式: 对象.方法。

get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

def runoob(request):
    name = request.POST.get("name")
return HttpResponse('姓名:{}'.format(name))

3、body

数据类型是二进制字节流,是原生请求体里的参数内容,在 HTTP 中用于 POST,因为 GET 没有请求体。

在 HTTP 中不常用,而在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML、Json 等。

def runoob(request):
    name = request.body
print(name)
return HttpResponse("菜鸟教程")

4、path

获取 URL 中的路径部分,数据类型是字符串。

def runoob(request):
    name = request.path
    print(name)
    return HttpResponse("菜鸟教程")

5、method

获取当前请求的方式,数据类型是字符串,且结果为大写。

def runoob(request):
    name = request.method
    print(name)
    return HttpResponse("菜鸟教程")

二、响应对象:HttpResponse 对象

响应对象主要有三种形式:HttpResponse()、render()、redirect()。

HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。

def runoob(request):
# return HttpResponse("菜鸟教程")
return HttpResponse("<a href='http://https://www.runoob.com/>菜鸟教程</a>")

render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。

def runoob(request):
    name ="菜鸟教程"
return render(request,"runoob.html",{"name":name})

redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。

def runoob(request):
return redirect("/index/")

render 和 redirect 是在 HttpResponse 的基础上进行了封装:

  • render:底层返回的也是 HttpResponse 对象
  • redirect:底层继承的是 HttpResponse 对象

到此这篇关于Django框架中视图用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 如何使用Python脚本实现文件拷贝

    如何使用Python脚本实现文件拷贝

    这篇文章主要介绍了如何使用Python脚本实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 如何将json数据转换为python数据

    如何将json数据转换为python数据

    这篇文章主要介绍了如何将json数据转换为python数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Pytorch如何指定device(cuda or cpu)

    Pytorch如何指定device(cuda or cpu)

    这篇文章主要介绍了Pytorch如何指定device(cuda or cpu)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python中不同类之间调用方法的四种方式小结

    Python中不同类之间调用方法的四种方式小结

    类是一种面向对象的编程范式,它允许我们将数据和功能封装在一个实体中,本文主要介绍了Python中不同类之间调用方法的四种方式小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • python 批量下载bilibili视频的gui程序

    python 批量下载bilibili视频的gui程序

    这篇文章主要介绍了python 批量下载bilibili视频的gui程序,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • python pdb调试器及使用方法

    python pdb调试器及使用方法

    这篇文章主要介绍了python pdb调试器及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python中def的用法以及def是什么意思详解

    Python中def的用法以及def是什么意思详解

    这篇文章主要介绍了Python中def的用法以及def是什么意思的相关资料,文中介绍了Python中函数的定义和使用方法,还给出了详细的代码示例,需要的朋友可以参考下
    2024-10-10
  • Python 限制线程的最大数量的方法(Semaphore)

    Python 限制线程的最大数量的方法(Semaphore)

    今天小编就为大家分享一篇Python 限制线程的最大数量的方法(Semaphore),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python偏函数的实例用法总结

    python偏函数的实例用法总结

    在本篇文章里小编给大家整理的是一篇关于python偏函数的实例用法总结内容,有兴趣的朋友们可以跟着学习参考下。
    2021-07-07
  • PyTorch中torch.nn.functional.cosine_similarity使用详解

    PyTorch中torch.nn.functional.cosine_similarity使用详解

    在pytorch中可以使用torch.cosine_similarity函数对两个向量或者张量计算余弦相似度,这篇文章主要给大家介绍了关于PyTorch中torch.nn.functional.cosine_similarity使用的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论