views视图函数属于MTV中逻辑处理的部分
视图函数包含着两个对象,HttpRequest对象和HttpResponse对象

一.HttpRequest对象

HttpRequest对象在Django中会默认传到views函数中作为第一个参数

HttpRequest的属性:

属性 说明
path 请求页面的全路径,不包括域名
method 请求中使用的HTTP方法
GET 包含所有HTTP GET参数的类字典对象
POST 包含所有HTTP POST参数的类字典对象
REQUEST 该属性是POST和GET属性的集合体,先查找POST属性,然后再查找GET属性
COOKIES 包含所有cookies的标准Python字典对象
FILES 包含所有上传文件的类字典对象。FILES中的每个Key都是<input type=”file” name=”” />标签中name属性的值. FILES中的每个value 同时也是一个标准Python字典对象,包含下面三个Keys: filename: 上传文件名,用Python字符串表示 content-type: 上传文件的Content type content: 上传文件的原始内容
META 包含所有可用HTTP头部信息的字典
user 是一个django.contrib.auth.models.User 对象,代表当前登录的用户。如果访问用户当前没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例
session 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
raw_post_data 原始HTTP POST数据,未解析过

HttpRequest的方法:

方法 说明
getitem(key) 返回GET/POST的键值,先取POST,后取GET
has_key() 检查request.GET or request.POST中是否包含参数指定的Key
get_full_path() 返回包含查询字符串的请求路径,包含get方式发送的数据
is_secure() 如果请求是安全的,返回True

二.HttpResponse对象

HttpResponse对象是我们手动创建的,为了给用户发送一个相应,一般返回的就是让浏览器去渲染的前端页面。
例如:


from django.shortcuts import HttpResponse def login(req):
return HttpResponse("welcome")

在HttpResponse的基础上拓展了两个常用方法render方法和redirect方法

render方法

render方法用于将有关信息利用模板添加到要给用户发送的html文档中
render方法的参数:

  • request:即视图函数中的HttpRequest对象,也就是第一个参数
  • template_name:templates 中定义的文件,也就是html文档
  • context: 要传入html文档中用于渲染呈现的数据, 默认是字典格式。也可以使用locals(),表示将函数中所有的变量传给模板
  • content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值
  • status: http的响应代码,默认是200
  • using: 用于加载模板使用的模板引擎的名称

例如:


def login(req):
return render(req,"test.html",{"name":"sfencs"})

redirect方法

redirect方法表示重定向,参数可以一个完整的url路径如”https://www.cnblogs.com/"也可以是一个本网站的分支路径如"/login/
这里有一点要注意,如果redirect的路径中写的是”login/“,即没有前面那一个“/”,那么会重定向到你当前页面的路径后再加上”login/“的那个路径。
redirect方法与render方法的区别在于redirect方法会重新走一遍重定向路径的视图函数的逻辑,render方法只是直接返回一个页面,上方的地址栏中的路径还是原来的路径。

Django之views视图函数的更多相关文章

  1. django views视图函数返回值 return redirect httpresponse总结

    django views视图函数返回值 return redirect  render httpresponse总结

  2. django views视图函数

    Django views.py视图文件 一. 创建views.py文件,在工程文件夹根目录创建views.py视图文件,其实任意文件名都可以,使用views是为了遵循传统. 注:所有的views函数都 ...

  3. python web框架篇:views视图函数

    Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...

  4. Python学习---django重点之视图函数

    django重点之视图函数 http请求中产生两个核心对象: http请求:HttpRequest对象,由Django自己创建 http响应:HttpResponse对象,由开发自己创建,必须返回一个 ...

  5. 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap

    简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...

  6. Django创建通用视图函数

    想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...

  7. Django的views视图系统

    老师的博客:http://www.cnblogs.com/liwenzhou/articles/8305104.html 以看老师的博客为主 一个视图函数(类),简称视图,是一个简单的Python 函 ...

  8. Django 框架之视图函数(Views)

    http请求中产生的两个核心对象: http请求: HttpRequest对象 http响应: HttpResponse对象 所在位置: django.http HttpRequest 对象的属性和方 ...

  9. Django路由配置系统,视图函数

    一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...

随机推荐

  1. 利用nginx解决跨域问题

    访问我的博客 前言 最近遇到了跨域问题,结合之前[微信支付开发本地接收异步通知回调]的经验,利用 Nginx 实现了跨域. 公司之前为了解决跨域问题,用的是 iFrame,反正对于只做后端的我而言,觉 ...

  2. CentOS QT can't find lGL

    直接安装: yum install libGL, yum install libGL-devel 库即可.

  3. Maven的默认中央仓库

    当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...

  4. (转)request.getSession()几种获取情况之间的差异

    一.三种情况 HttpSession session = request.getSession(); HttpSession session = request.getSession(true); H ...

  5. zoj 2724 Windows Message Queue(使用priority_queue容器模拟消息队列)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2724 题目描述: Message queue is the b ...

  6. Java并发系列[10]----ThreadPoolExecutor源码分析

    在日常的开发调试中,我们经常会直接new一个Thread对象来执行某个任务.这种方式在任务数较少的情况下比较简单实用,但是在并发量较大的场景中却有着致命的缺陷.例如在访问量巨大的网站中,如果每个请求都 ...

  7. 浅析libuv源码-获取精确时间

    在Timer模块中有提到,libuv控制着延迟事件的触发,那么必须想办法精确控制时间. 如果是JS,获取当前时间可以直接通过Date.now()得到一个时间戳,然后将两段时间戳相减得到时间差.一般情况 ...

  8. MVC使用jQuery.ajax()删除数据

    jQuery.ajax()可以简写为$.ajax().以前有写过MVC删除的实现,如<MVC实现删除数据库记录> http://www.cnblogs.com/insus/p/336804 ...

  9. SQLite事务 SQLite插入多条语句为什么这么慢?.net (C#)

    今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!下面是他发给我的测试代码.我晕~~~~~~ using System.Data; ...

  10. 配置Windows 防火墙,允许SQL Server的远程连接

    在运行SQL Server的服务器上,我们要找到哪些是SQL Server正在侦听的端口,并将其添加到Windows防火墙的入站例外. 首先,我们需要添加 SQL Server 服务侦听 Window ...