代码之家  ›  专栏  ›  技术社区  ›  fredrik

webapp最佳实践模板

  •  0
  • fredrik  · 技术社区  · 14 年前

    在编码了6-9个月之后。在阅读了一些代码或阅读了一些最佳实践之后,我可能多次更改了我的编码风格。但有一件事我还没有找到一个十字架,那就是为什么要填充模板。

    到目前为止,我通过许多方法传递模板dict(更改/修改它),并返回is。结果是,每个方法都将模板dict作为第一个参数,并返回它,在我看来,这似乎不是最好的解决方案。

    一个想法是有一个方法来处理所有的更改。但我是古玩如果有最好的做法?或者它是“做你想做的事”——一种类型的事情?

    我认为最难看的两件事是作为一个论点发送,并以所有方法返回它。在代码中只写了变量名XXX次:)

    弗雷德里克

    编辑 :

    为了证明我对模板dict的意思(我认为这是一个通用术语,我是从Django的模板方法的Google实现中得到的)。

    我有一个dict,我通过render.template方法传递给模板:

    template.render(path, template_dict) #from google.appengine.ext.webapp import template
    

    为了将数据/听写/列表发送到视图(HTML文件),我需要操纵此模板。如果我没弄错的话。

    因此,考虑到这一点,我的代码最终通常会如下所示:

    ## Main.py file to handle the request and imports classes.
    
    from models import data
    from util import foo
    
    class MainHandler(webapp.RequestHandler):
        template_dict = { 'lang' : 'en' }
        ## reads all current keys and returns dict w/ new keys, if needed
        template_dict = data.getData(template_dict) 
        if 'unsorted_list' in template_dict:
            template_dict = util.foo(template_dict)
        ## and so on....
    
        path = os.path.join(os.path.dirname(__file__), 'templates', file)
        self.response.out.write(template.render(path, template_dict))
    

    在我的大多数应用程序中,许多返回和集合并不出现在main.py中,而是出现在其他类和方法中。

    但你应该做个大概的想法。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Alex Martelli    14 年前

    如果所讨论的函数都是某个对象的方法 foo ,然后它们中的每一个都可以引用它们正在构建的上下文(我想这就是您所说的“模板dict”?)作为 self.ctx 或者类似的(属性名有些随意,关键是您可以将上下文作为 ,通常在中初始化为空 __init__ ,并通过 的方法;最后, foo.ctx 准备好了)。

    在更一般的情况下,函数到处都是,而不是作为单个对象的方法,这是行不通的。在那种情况下 ctx 不需要传递给每个函数(尽管函数通常可以就地更改它,并且不需要返回它)。