知其然亦要知其所以然

views每个方法的参数都是request,那么问题来了,request为何物?

首先,几乎每个方法都是取数据(无论是从数据库,还是从第三方接口),然后进行一定的处理,之后传给前端。而前端请求数据,就会向后端发送一个http请求,这个请求的请求路径,经过urls,会调用url中指定的方法。此时django就会将HttpRequest对象作为第一个参数传入此方法。故,request即为一个httpRequest对象。

然后,出现了一个新问题,httpRequest是什么,又含有什么属性和方法?

  1. httpRequest类定义在django.http中
  2. httpRequest对象是由django自动创建的

常见属性:

  • HttpRequest.method  字符串类型,表示所用的http方法
  • HttpRequest.content_type  指content_type头解析的请求的MIME类型
  • HttpRequest.content_params 指content_type标题中的 k/v参数字典
  • HttpRequest.GET 此为一个字典一样的对象,里面有get请求中的所有参数
  • HttpRequest.POST 此亦为一个字典一样的对象,里面有post请求表单中数据
  • HttpRequest.COOKIES 此仍为一个字典一样的对象,包含所有的cookie数据
  • HttpRequest.session  : SessionMiddleware中间件,可读写的,为一个字典一样的对象,表示当前会话。我们要保存用户状态,回话过程等等,需要利用此中间件
  • HttpRequest.user : AuthenticationsMiddleware中间件:表示当前登录用户的AUTH_USER_MODEL实例,若未登录,贼user为AnonymousUser实例

QueryDict:

  在HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例,此亦为一个类似于字典一样的类。

  经常用的方法为QueryDict.get(key,default) ,返回key对应的值,若对应多个值,则返回最后的值,若key不存在,则返回默认值。

  

django中views中方法的request参数的更多相关文章

  1. Python之Django之views中视图代码重复查询的优化

    Django框架中views视图中如果多个函数都有同样的查询语句,例如: allcategory = Category.objects.all() remen = Article.objects.fi ...

  2. 使用Javascript获得网页中通过GET方法提交的参数

    下面我将写出一个函数,用来获取GET方法提交的参数 function getParameter(parameterName) { var string = window.location.search ...

  3. 类中定义的方法,self参数

    class a(): def __init__(self): self.aa = 5 def test(): print "haha" a.test() self指的是对象本身,而 ...

  4. Django的views中的request

    Django使用request和response对象在系统间传递状态. 当一个页面被请示时,Django创建一个包含请求元数据的 HttpRequest 对象. 然后Django调入合适的视图,把Ht ...

  5. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  6. [Django笔记] views.py 深入学习

    views.py 是django MTV 中的主要逻辑层,相当于MVC中的 Controller 以下的实例都基于这样一个路由表: urlpatterns = [ url(r'^(index)?$', ...

  7. struts 页面调用Action的指定方法并传递参数

    如果为action配置了类,那么默认就会执行Action类的excute方法,Action类的写法三种: ① public class Action1 { public String execute( ...

  8. django中将views.py中的python方法传递给html模板文件

    常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): cap ...

  9. Django中views笔记

    reverse反解析 #路由中定义namespace.name,reverse可将其转换为url url = reverse('namespace:name') return redirect(url ...

随机推荐

  1. Unable to docker login through CLI - unauthorized: incorrect username or password

    Unable to docker login through CLI - unauthorized: incorrect username or password To solve it proper ...

  2. pycharm+Django+MySQL项目连接数据库中原有数据库

    1.安装驱动 一般会有MySQLdb.pymysql等,因为python版本等问题,我安装的是pymysql. 还可以在项目里安装,File->settings->project 2.在项 ...

  3. 使用百度ocr接口识别验证码

    #!/usr/bin/env python #created by Baird from aip import AipOcr def GetCaptchaV(filename): APP_ID = ' ...

  4. spark on yarn 内存分配

    Spark On YARN内存分配 本文主要了解Spark On YARN部署模式下的内存分配情况,因为没有深入研究Spark的源代码,所以只能根据日志去看相关的源代码,从而了解“为什么会这样,为什么 ...

  5. Collections与Collection

    Collection是集合体系的最顶层,包含了集合体系的共性 Collections是一个工具类,方法都是用用Collection Collections方法: //static int binary ...

  6. vue在main.js中全局引用css的方法及坑

    步骤: 1.配置文件webpack.config.js: { test:/\.css$/, loader:'style-loader!css-loader' } 坑1:-loader尾缀 坑2:Mod ...

  7. 大数据学习笔记5 - Spark

    Spark是一个基于内存计算的大数据并行计算框架.所以,Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型. 在实际应用中,大数据处理无非是以下几个类型: 复 ...

  8. 100-days: twenty-nine

    Title: The promise and perils of synthetic biology promise n.希望成功的前景 peril n.巨大的危险:险情,险境 释义:the peri ...

  9. Android 8.0+ 更新安装apk失败的问题

    最近做项目发现Android 8.0+ 更新安装apk时 出现安装失败的情况  总结原因是 缺少安装的权限 Android 8.0 (Android O)为了针对一些流氓软件引导用户安装其他无关应用. ...

  10. 缓存cache介绍

    1.  为何要用缓存.缓存的目的是为了什么?(https://my.oschina.net/u/3378039/blog/2986697) 一个程序的瓶颈在于数据库,内存的速度远远大于硬盘的速度,当我 ...