哲学 老白姑娘

     
 django拍卖一个Request的长河是第一通过django
中间件
,然后还经默认的URL方式进行的。所以说咱俩而开的即使是当django
中间件者地方拿具有Request拦截住,用我们团结的艺术就处理后直接归Response,那么我们可简化本的统筹思路,把高中级件不能够处理的
Request统统不随便,丢给Django去处理。

  老白姑娘一点且不老,因此自道称呼一个青年女“老白”真的是出硌不极端对劲。不过也,习惯成自然,鉴于高中一直是这样“老白”“老白”的叫着,如果突然有同天突然改了人,反而有种植不惯。所以,还是吃女儿老白吧。
   其实跟老白姑娘成情人纯属意料之外的政工。老白姑娘并无是善游走于江湖底行道中人,反而是使黄药师般喜欢隐匿于世野的闲云野鹤的帮派。高中时代的老白姑娘,大抵可用一个字来形容;酷。远远地望过去,只感觉一个竹竿在您眼前晃悠。没错,她是地地道道的吃货,却盖胃口的消化问题如骨瘦如柴,让咱这个等怎么削弱且是那些果肉的人头愤恨不已;她留在一头李宇春式的短发,刘海斜斜的,宛如直角梯形里面的斜角边,不偏不倚恰好遮住了非法葡萄似的眼睛的中间同样不过的四分之三;衣着也老不挪寻常路,如果未是强制性穿校服,老白姑娘在本人印象中老是一样套牛仔装,无论春夏秋冬。后来沉思怎么可能,冬天里总白姑娘还会见穿过在罕见的牛仔装在高寒里逛?答案绝对是否定的。只不过,她穿什么,都总让咱们挺有牛仔的感到。一如它的网名,“wildlife”,牛仔一般,过在逍遥的跌宕生活。我们只管是同班同学,但出于座位距离实在遥远等种种原因,实际点并无多。我本着她底记忆,只不过是早读上了挺遥远后,睡眼惺忪的老白姑娘旁若无人地步入已经为的满满的教室,在深表上第N糟糕签下自己之名;只不过是奇迹经过她底办公桌,注意到它们摇摇欲坠得堆得四处都是的破破破烂的写,乱得足以与破烂相媲美的书桌,然后自己以心尖不厚道地暗爽,“我的瞎和汝平比较真正是小巫见大巫,佩服!佩服!."
或者是每次英语老师叫它们起,她那绝诚挚却同时充满喜感的答语:”老师,我委试过了,但是就算是免见面。“可惜死板的英语老师很麻烦领会其中的好玩,总是怒气冲冲地讥讽她一番,这反加剧了咱对角落里之老白姑娘的深刻印象。
   高三同糟非常偶然的易座,使得高中三年吧,老白姑娘第一潮特别神奇地因为于了自之尾。已经仙逝很丰富日子了,但是本人仍记得老白姑娘第一不善戳我后背起来的第一糟糕审含义及之对话:“老卢,你的历史是咋学的。。。”老白姑娘的史都很差劲,我眷恋是以那种死记硬背的事物根本就是未在老白姑娘神奇非比正常人之头颅里设有了。很快,话题十分当然的即由枯燥无味的高考上转移至了别样点。我们赫然发现有限单原本八竿子打不着的人头身上竟然有如此多的共同点。比如,老白姑娘啊是左撇子,只不过她底养父母遂地吧大残暴地吃它扳回了右手;老白姑娘喜欢的书,我基本上吧感同身受以及我们一致发生点爷们的露骨。。。。。。遥记得,那是单星期天之下午,高三麻烦得无征的宝贵闲暇,我们浪费地全体据此当了唠嗑身上,一直聊及人数干舌燥,饥肠辘辘。然后简单只近乎之丁联手手拉手去学校前场吃那么这尚是均等块五如今倒是是少片的馅饼,喝五毛钱一死碗的略米粥。最后还非舒适,我们翘掉了难得的继自习,聚在同等片看了一致管影视。学校的投影仪放映的,效果的异自然不在话下,我曾经忘却了播出的凡呀,只记得,我们大开心。老白姑娘生可贵地发了其的稍虎牙,老白姑娘和我说老卢我从未悟出你本来没有想象中的那呆,我说自家为尚未悟出你本那么能扯。
    和老白姑娘的友情就这么开始了。很多人还觉得好奇。的确,高中时期的本人,沉默少言,一称优秀生的美德模样。而老白姑娘,总是大步甩在它丈夫般的流星步,穿在松松垮垮的运动衣,特立独行。两独人口怎么看还无像是自同一个星体的口。然而,奇迹还是这么发生了。你不由得不信。
    高考后的暑假老白姑娘去了番北京。再看看她底时节整个人口非法瘦了同样圈,斜角边似的刘海撩了起来,露出了光无比的大脑门。老白姑娘说于北京市喝豆浆的时光遇到了一个西藏僧人,他告诉老白姑娘她底福分都叫它们的刘海遮已了。老白姑娘当机立断,立刻剪掉了陪同在大团结随身十差不多年的刘海。我看来着老白姑娘,觉得还真有了一些啊变动。她连连会遇到一些奇奇怪怪的人口以及物,听见有奇奇怪怪的发言,我曾经见怪不甚了,但是还是嗔怪道:为什么我就接触不至吗?
    估计我要独俗人吧。
    老白姑娘上了大学之后好奇葩地及她最为厌恶之史重逢。她起读讨厌的历史大部头,开始勾画阿育王的舆论,开始各种奇奇乖乖的图样的历史意义的议论。有相同不善她发图问我图是啊意思,光秃秃的干缠上了绿色的零头,直插云霄,我无奈地回是未是古之繁衍,她转头了一个鼓劲的神,然后激动地说老卢你实在厉害。我无语,老白姑娘,尽管到了小家碧玉的杭州,仍然不改动粗犷的大侠本色;老白姑娘说眷恋模仿哲学的当儿自己心头又平等振动,我们还迫于现实已经忘做梦的权,老白姑娘却照旧执迷不悟前行。义无反顾,她说但希望自己穷困寥落的时段大家能留下自己一个馍,我哈哈一乐,却百般震撼。心说哪怕只是留一个包子,我吗分割一半让您。没有怎么。
    老白姑娘没有多完美的心性,她执拗的异常,也产生点直率,充满了一角,但是咱照样毫无顾忌地好它。她是咱的老白姑娘,我们于物欲横流的社会迷失方向的时刻,猛然察觉,下一个拐弯,老白姑娘刚刚手提指明灯,露出她那么有些虎牙,为咱指明回家之程。

     
 如果你若当用户登录还是其它的处理过程中成功自己之局部拍卖,比如进行权力决定,对回到结果作一些甩卖,可以利用python的修饰器,但生只缺陷就是使以每个视图前面都增长修饰器,当初自己就算是这么做的,太辛苦了。后来发现
django
中间件特别高,可以拓展全局控制,而且可以增强性能。提倡这种dry的哲学风格设计充分的妙趣横生,

       先说生django
中间件的安方式:

       
为了激活中件组件,把她填补加到公的settings模块的MIDDLEWARE_CLASSES列表中,在MIDDLEWARE_CLASSES里,每个中间件组件通过一个字符串来表示:完整的到中间件的类名的Python路径,例如,这里是经过django-admin.py
startproject创建的 

默认的MIDDLEWARE_CLASSES:

MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', #'decorators.middleware.DecoratorsMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware',)

       
Django安装部需要另中间件--例如MIDDLEWARE_CLASSES可以吗空,如果你想这样的话--但是强烈建议你利用CommonMiddleware 顺序是产生义之,在求和视图阶段,Django使用MIDDLEWARE_CLASSES给定的依次申请中间件,而于应对和酷等,Django使用相反的顺序申请中间件,即DjangoMIDDLEWARE_CLASSES当作一种植视图方法的"包装器",在呼吁时,它于到向下报名之列表的中游件到视图,而在诺答时她反序进行.

更何况下django 中间件的定义方法:

* 请求预处理:process_request(self, request) :

       
该法在伸手让接到及URL被解析来控制运行哪个视图之前及时调用,它传递您也许想改的HttpRequest对象 process_request()应该回到None或者HttpResponse对象,如果它回到None,Django将继续处理该要,执行外其它的中件然后是相当的视图。如果请中件返回HttpResponse对象,Django将不见面又调用其它任何中间件(任何项目)或者当的视图,它以回来该应。 

* 视图预处理:process_view(self, request, view, args,
kwargs) :

     
  该方式以请中件运行后和URL被分析到一个视图后同视图实际上给调用之前为调用,

        参数说明:

            * request HttpRequest对象

**            *
v*iew,*** Django将调用来实施该要的视图函数,它是实在的法子对象自我,而非是措施名字符串

**            * args
将受传送给视图的职务参数列表,不包括request参数(它直接是视图的首先只参数) **

**            * kwargs
将吃传送让视图的重大字参数字典 **

**       **
像process_request()一样,process_view()应该归None或者HttpResponse对象,如果它们回到None,Django将继续处理要执行另外其他的视图中间件然后是合适的视图,如果视图中间件返回HttpResponse对象,Django将未会见再次调用其它任何中间件或者当的视图,它将赶回该应答 

* 应答后拍卖:process_response(self,
**request, response) 
       **
该法以视图方法就调用和诺答生成后调用,这是中间件修改应答输出的地方,输出压缩(见下)是许答中间件的一个分明的利用参数应该十分明白了--request凡请对象,response是打视图返回的答疑对象不像要与视图中间件,它们得以回来None,process_response()必须回到一个HttpResponse对象,该答复可以是传递让该 
主意的原本应答(可能吃改了)或者新的允诺答 

* 异常后甩卖:process_exception(self,
**request, exception) 
   **   
 该方法才在失误并且视图触发不可捕获的慌时调用,不包括Http404百般,你得下是钩子来发送错误通知,在一个日志文件记录信息,或者甚至尝试自动还原该错误。该法的参数是咱们一直处理的平等的request对象以及视图方法触发的真正的Exception对象exception。process_exception()可能回一个用作对显示为浏览器的HttpResponse或者返回None来继续Django内建的充分处理。

**以我们刻画了只例子**

MIDDLEWARE_CLASSES = (
    'apps.auth.middleware.DecoratorsMiddleware',    
)

然后DecoratorsMiddleware定义之措施是:

#coding=utf-8import urllibfrom django.template import RequestContextfrom django.shortcuts import render_to_responseclass DecoratorsMiddleware(object): """ 如果返回的对象是字典,就对它进行处理 """ def process_response(self, request, response): if type(response) == dict: param_dict = {} for k,v in request.GET.items(): if k == 'last_id': param_dict['last_id'] = response['ret'].get('last_id','') else: param_dict[k] = v.encode('utf-8') if not param_dict.get('last_id'): param_dict['last_id'] = response['ret'].get('last_id','') response['ret']['params'] = urllib.urlencode(param_dict) response['ret'] = dict(response['ret'], **param_dict) return render_to_response( response['template'], response['ret'], RequestContext(request, {}), ) return response

 

最终总结一下django 中间件不是杀为难,用一下就算应有比较清楚了。

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。