第5章 URL,HTTP机制和视图

csrftoken	QKrHLaRIXhoAdeMYSOvkvmqVLXv5nyoZRVqme5fbsEf7F1nhT3oKFSmtp6wYSluE
sessionid	ftlkhm23nvo1t2einsfqjpxyyt860mvm

<WSGIRequest: GET '/blog/?title=dd&body=ddd'>
---------------------
{'csrftoken': 'QKrHLaRIXhoAdeMYSOvkvmqVLXv5nyoZRVqme5fbsEf7F1nhT3oKFSmtp6wYSluE', 'sessionid': 'ftlkhm23nvo1t2einsfqjpxyyt860mvm'}
---------------------
<class 'django.core.handlers.wsgi.WSGIRequest'>
<QueryDict: {u'body': [u'ddd'], u'title': [u'dd']}>
dd
ddd


Cookies和会话(Session):

说完了GET和POST,请求对象里接下来最常用的就是request.COOKIES,它也是一个字典,

代表了存储在请求里的HTTP cookies.

cookies是网页里一种在用户浏览器里存放持久化信息的手段---

大多数网站的认证系统都会用到它。


通常来说,大多数cookies都是用来支持一个叫做会话(session)的特性,

这代表一个网页可以向浏览器要求一个能标识用户的值(这个信息可以在用户首次连接网站或是登陆的时候设置),

然后用这个信息来为那个用户提供定制行为的页面。

由于cookies在客户端可以被轻易修改,所以存放关键数据是很不安全的,


大多数网站都会选择把信息存放在一个服务器端的会话对象里 只在cookies里保留一个唯一的会话ID。


其他服务器变量:

前面讲到的都是请求对象是最常用的属性,不过请求对象里还有很多其他变量,这些变量都是只读的。

path:URL 里域名后的部分,例如,/blog/2007/1/04,这个通常也是URLconf要处理的字符串:

 print req.COOKIES
  print req.path


{'csrftoken': 'QKrHLaRIXhoAdeMYSOvkvmqVLXv5nyoZRVqme5fbsEf7F1nhT3oKFSmtp6wYSluE', 'sessionid': 'ftlkhm23nvo1t2einsfqjpxyyt860mvm'}
/blog/

method:"GET"或"POST" 两者之一,表明了这个请求用的是哪一个HTTP请求方法


{'csrftoken': 'QKrHLaRIXhoAdeMYSOvkvmqVLXv5nyoZRVqme5fbsEf7F1nhT3oKFSmtp6wYSluE', 'sessionid': 'ftlkhm23nvo1t2einsfqjpxyyt860mvm'}
/blog/
GET


  print req.COOKIES
  print req.path
  print req.method


encoding:表妹了用来解码表单提交数据所需的编码字符集的字符串:


响应对象:

  到此,你已经读入传递视图函数的信息了,现在我们来看看负责返回的响应。


对我们来说,响应比请求更简单一点---。


最常用的方法就是创建响应对象---HttpResponse接受一个字符串作为构造函数的参数,并将它保存到content里。



  print '------------------------------------------'
  #return HttpResponse(template.render(context, req))
  return HttpResponse("<html>this is a tiny web page!</html>")


这样就有了一个完整的响应对象,可以返回给web服务器并转发给用户浏览器了。


中间件:

虽然Django应用程序的基本流程还是比较简单的(接受请求,找到适合的视图函数,返回响应),

不过还可以在上面加注更多层次来变得更灵活强大。


其中之一就是中间件(middleware)---这些Python函数可以在上述过程里的多个地方执行来改变整个应用程序的输入


5.3 视图和逻辑:


视图(也叫控制器)是所有Django Web应用程序的核心,因为它们提供了几乎所有的实际的程序逻辑。


在定义和使用模型的时候,我们是数据库管理员,在编写模板的时候,我们是界面设计师,


而在编写视图的时候,我们才是真正的软件工程师


就是Python函数:

  本质上来说,Django视图就是Python函数那么简单,对视图函数的唯一要求就是它们必须接收一个

HttpRequest 对象并返回一个HttpResponse对象。

原文地址:https://www.cnblogs.com/hzcya1995/p/13349424.html