Quixote学习笔记(5)

The _q_resolve() method

Note that the ExtraDirectory class inherits from Resolving (in addition to Directory). The Resolving mixin modifies the _q_traverse() so that, when a component has an attribute name designated by _q_translate(), but the Directory instance does not actually have that attribute, the _q_resolve() method is called to "resolve" the trouble. Typically, the _q_resolve() imports or constructs what should be the value of the designated attribute. The modified _q_translate() sets the attribute value so that the _q_resolve() won't be called again for the same attribute. The _q_resolve() pattern is useful when you want to delay the work of constructing the values for exported attributes.

Forms

You can't get very far writing web applications without writing forms. The root demo includes, at http://localhost:8080/extras/form, a page that demonstrates basic usage of the Form class and widgets defined in the quixote.form package.

$Id: demo.txt 25695 2004-11-30 20:53:44Z dbinger $



这两段没看懂。:(

extras.ptl:
     def  _q_resolve(self, component):
        
#  _q_resolve() is a hook that can be used to import only
         #  when it's actually accessed.  This can be used to make
         #  start-up of your application faster, because it doesn't have
         #  to import every single module when it starts running.
         if  component  ==   ' form ' :
            
from  quixote.demo.forms  import  form_demo
            
return  form_demo

directory.py:
class  Resolving(object):
    
"""
    A mix-in class that provides the _q_resolve() method.  _q_resolve()
    is called if a component name appears in the _q_exports list but is
    not an instance attribute.  _q_resolve is expected to return the
    component object.
    
"""
    
def  _q_resolve(self, name):
        
return  None

    
def  _q_translate(self, component):
        name 
=  super(Resolving, self)._q_translate(component)
        
if  name  is   not  None  and   not  hasattr(self, name):
            obj 
=  self._q_resolve(name)
            setattr(self, name, obj)
        
return  name

class Directory的_q_translate:

     def  _q_translate(self, component):
        
""" (component : string) -> string | None

        Translate a path component into a Python identifier.  Returning
        None signifies that the component does not exist.
        
"""
        
if  component  in  self._q_exports:
            
if  component  ==   '' :
                
return   ' _q_index '   #  implicit mapping
             else :
                
return  component
        
else :
            
#  check for an explicit external to internal mapping
             for  value  in  self._q_exports:
                
if  isinstance(value, tuple):
                    
if  value[0]  ==  component:
                        
return  value[ 1 ]
            
else :
                
return  None
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值