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

Ndjango模板对常规Django模板有哪些限制?

  •  3
  • Soviut  · 技术社区  · 15 年前

    ndjango和django模板之间是否存在任何差异、限制或gotchas?我对在未来的ASP.NET MVC项目中实现它们特别感兴趣。

    我确信我将无法使用我为Django编写的任何自定义模板标签,但我可以将它们移植到Ndjango吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   kolosy    15 年前

    是的,你会的。您可以通过编写自己的标记和过滤器集并在应用程序启动时注册它们来扩展默认标记和过滤器集。只有一件事要记住:过滤器是非常容易扩展的,所以你只需要实现两个直接向前的接口中的一个(对于没有参数的过滤器是isimplefilter,对于有1个参数的过滤器是iffilter)。对于标签,其概念是相同的,但是由于ndjango本身是用f_编写的,因此从c_或vb使用ITag接口要困难一些。这当然可行,但有点乱。从F开始,这很简单。

    在F中,它看起来如下:

    /// A single tag implementation
    and ITag = 
        /// Transforms a {% %} tag into a list of nodes and uncommited token list
        member Perform: Lexer.BlockToken -> IParser -> 
                 Lexer.Token seq -> (Node list * Lexer.Token seq)
    

    在C中,它看起来如下:

        public Tuple<FSharpList<Interfaces.Node>, IEnumerable<Lexer.Token>>
                  Perform(Lexer.BlockToken __p1, Interfaces.IParser __p2,
                       IEnumerable<Lexer.Token> __p3)
    

    同样-过滤器在C中很容易-事实上,它附带的大多数过滤器都是用C编写的。标签在F中很容易,但在C中有点混乱。#

    在限制方面,没有任何已知的限制,我不知道。

    完全公开-我是Ndjango的作者之一。

    推荐文章