首页 > 编程知识 正文

python django框架,python开发web优势

时间:2023-05-04 03:17:04 阅读:159226 作者:703

Werkzeug是python wsgi规范的实用函数库。 它被广泛使用,基于BSD协议。

闪存的基础是使用了Werkzeug。

完整代码:

https://github.com/轻薄/Light/tree/master/webapp

Python版本:

建议使用Python3。 在Python2中,必须将except HTTPException as e更改为except HTTPException,e

总体思想

通过名为url_map的词典,建立url和处理url的视图函数之间的映射关系。

思路请参考Werkzeug给出的官方例子:

3359 github.com/pallets/werk zeug/blob/0.12.2/examples/webpylike/webpylike.py

关键点:

调用add_url_rule方法后,通过调用类方法,视图类返回闭包,闭包返回视图函数,建立了url与视图函数的映射关系。

run_simple启动wsgi服务器,self参数调用自身。 因为实现了__call__方法,所以对象是可调用的对象

代码

fromwerkzeug.wrappersimportbaserequest,baseresponsefromwerkzeug.exceptionsimporthtpexception,MethodNotAllowed, no owed notfoundfromwerkzeug.servingimportrun _ simpleclassrequest (base request ) : ' ' encapsulatesarequest.' ' ' classsssss assview(object ) : ' ' baseclassforourviews.' ' def _ _ init _ ) )。 3360 self.methods _ meta={ ' get ' : self.get,' POST': self.POST,' PUT': self.PUT, “delete'333333 }defget(self ) : raise MethodNotAllowed ) (post=delete=put=getdefhead ) self ) :返回自适应* * * * options (: if request.methodinself.methods _ meta 3360 return self.methods _ meta ) ) ) options ) else : return ' h1 unknownorunsupportedrequiremethod/h1 ' @ classmethoddefget _ func (cls ) 3360deffunc(* kwargs (: obj=func.view _ class ) returnobj.dispatch_request ) args、 * 这是kwargs (func.view _ class=clsreturnfuncclasswebapp (object ) :def__init_(self ) :self._rl_ ) thview=self.URL_map.get ) URL, None ) ifview:response=view(req ) response=response ) response ) else 3360 response=response (h 1404 sourcenotfounountfoundatfoundate ) status=404 ) excepthttpexceptionase : response=ereturnresponse (environ, start_response ) def urls ) 3360 forurlinurls : self.URL _ map [ URL [ ' URL ' ] ]=URL [ ' view ' ].get _ func (det )

from webapp import WebApp,viewclassindex(view ) :defget(self,request ) : return ' hello world ' classtest ) view ) request ) : return ' test ' URLs={ ' URL ' : '/',' view':Index},{ 'url':'/test ',' view '

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。