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框架中视图用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Django框架视图函数设计示例

    本文实例讲述了Django框架视图函数.分享给大家供大家参考,具体如下: 视图函数即为处理HTTP请求的python函数.一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: 直接构造HTTP BODY 用数据渲染HTML模板文件 如果有逻辑错误就返回HTTP错误或者其他状态! 1.直接构造HTML页面 对于简单的页面,可以直接在视图函数汇总构造返回给客户端的字符串,通过HttpResponse函数封装后返回: #views.py from d

  • 在Python的Django框架中包装视图函数

    我们最终的视图技巧利用了一个高级python技术. 假设你发现自己在各个不同视图里重复了大量代码,就像 这个例子: def my_view1(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') # ... return render_to_response('template1.html') def my_view2(request): if not r

  • Django框架视图介绍与使用详解

    本文实例讲述了Django框架视图介绍与使用.分享给大家供大家参考,具体如下: 视图 视图:即一个python函数,可以叫 视图函数,或者简称 视图,定义在 应用/views.py 文件中. 作用:接收并处理请求,调用M和T,响应请求(返回HttpResponse或其子类) 每一个用户请求,都对应着一个视图(和url地址),由视图处理请求后,再返回html页面内容给浏览器显示. URL配置及匹配 作用:建立url地址和视图函数的对应关系,当用户请求某个url地址时,让django能找到对应的视图

  • 详解Python的Django框架中的通用视图

    通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应 响应对象.但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复 写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们提供了类似的 "shortcut"捷径--通用视图. 2. 使用通用视图 使用通用视图的方法就是在urls.py这个路径配置文件中进

  • 详解Django框架中的视图级缓存

    更加颗粒级的缓存框架使用方法是对单个视图的输出进行缓存. django.views.decorators.cache定义了一个自动缓存视图响应的cache_page装饰器. 他是很容易使用的: from django.views.decorators.cache import cache_page def my_view(request): # ... my_view = cache_page(my_view, 60 * 15) 也可以使用Python2.4的装饰器语法: @cache_page

  • Django框架中的对象列表视图使用示例

    direct_to_template 毫无疑问是非常有用的,但Django通用视图最有用的地方是呈现数据库中的数据. 因为这个应用实在太普遍了,Django带有很多内建的通用视图来帮助你很容易 地生成对象的列表和明细视图. 让我们先看看其中的一个通用视图: 对象列表视图. 我们使用第五章中的 Publisher 来举例: class Publisher(models.Model): name = models.CharField(max_length=30) address = models.C

  • Django框架下在视图中使用模版的方法

    打开current_datetime 视图. 以下是其内容: from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(h

  • 在Python的Django框架中使用通用视图的方法

    使用通用视图的方法是在URLconf文件中创建配置字典,然后把这些字典作为URLconf元组的第三个成员. 例如,下面是一个呈现静态"关于"页面的URLconf: from django.conf.urls.defaults import * from django.views.generic.simple import direct_to_template urlpatterns = patterns('', (r'^about/$', direct_to_template, { '

  • Django框架中视图的用法

    视图层 一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应. 响应可以是一个 HTML 页面.一个 404 错误页面.重定向页面.XML 文档.或者一张图片... 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中. 每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应. 视图层中有两个重要的对象:请求对象(request)与响应对象(H

  • Django框架中模型的用法

    目录 一.Django ORM 二.数据库配置 Django 如何使用 mysql 数据库 三.定义模型 1.创建 APP 2.常见报错信息 四.数据库操作 1.添加数据 2.获取数据 3.更新数据 4.删除数据 Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django 为这些数据库提供了统一的调用API. 我们可以根据自己业务需求选择不同的数据库. MySQL 是 Web 应用中最常用的数据库.本章节我们将以 Mysql 作

  • Python Web框架之Django框架cookie和session用法分析

    本文实例讲述了Python Web框架之Django框架cookie和session用法.分享给大家供大家参考,具体如下: part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而session是存放在服务器端的. 两者使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的key. Cooki

  • django框架中间件原理与用法详解

    本文实例讲述了django框架中间件原理与用法.分享给大家供大家参考,具体如下: 中间件:轻量级,介于 request和response之间的一道处理过程,在全局上改变了输入和输出 在django中就默认使用了七个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.

  • Python Django框架中表单的用法详解

    目录 文件上传 Form表单 表单字段 字段参数 widget参数 表单的验证 表单模型文件上传例子 模型表单 AJAX Django保证表单的正确显示需要添加CSRF(防止网站跨站请求伪造而默认开启的一种保护方式),在<form></form>之间添加 {% csrf_token %} 在项目settings.py中 * ‘django.middleware.csrf.CsrfViewMiddleware’, * 引入,如果没有此中间件,手动添加. 文件上传 首次打开路径是GET

  • django框架cookie和session用法实例详解

    本文实例讲述了django框架cookie和session用法.分享给大家供大家参考,具体如下: 首先知道http协议 http协议它是无状态的协议,验证的信息不会保留 基于请求响应,短连接 cookie 指一段小信息,内部是一组组的键值对,保存在客户端 访问一个地址时,服务器生成一个cookie,由浏览器保留在本地,再次访问地址时就会携带这个cookie,一般用于用户信息的验证 cookie的设置: obj.set_cookie(key,value,...) 下面来看一个简单的例子 #设置co

  • prototype框架中美元符号$用法分析

    本文实例讲述了prototype框架中美元符号$用法.分享给大家供大家参考,具体如下: prototype是实现面向对象的一个重要工具,是javascript的一个不错的框架. 用jquery的人都知道,jquery中也有$美元符号,prototype中呢,也有$,他们有什么区别呢. 1.prototype中$()的用法 prototype写法 $("test") 或者 $$("#test"), 他相当于js中document.getElementById(&quo

  • Flask和Django框架中自定义模型类的表名、父类相关问题分析

    本文实例分析了Flask和Django框架中自定义模型类的表名.父类相关问题.分享给大家供大家参考,具体如下: 一. Flask和Django中定义表名(执行迁移后生成)的方式和flask是不同的: 1. Django中表名的定义方式,以代码为例说明 class User(AbstractUser): # 继承自认证系统模型类 """用户模型类""" mobile = modles.CharField(max_length=11, mix_len

  • python django框架中使用FastDFS分布式文件系统的安装方法

    一.安装FastDFS 1-1:执行docker命令安装 # 安装tracker docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs youkou1/fastdfs tracker # 安装storage docker run -dti --network=host --name storage -e TRACKER_SERVER=IP地址:22122 -v /var/fdfs/storage:

  • Django框架中序列化和反序列化的例子

    1.序列化 DRF的核心 就是 前后端分离的核心 前后端分离开发的核心: 将模型转换为json 称之为 序列化 将json转换为模型 称之为 反序列化 1.序列化器的字段 Serializer 序列化器 为了得到模型里的字段,序列化器中的字段应与模型类中的字段名一致 ''' serializers.py ''' class BookInfoSerializer(serializers.Serializer): # read_only=True 只能读 不能修改 id = serializers.

随机推荐