NDjango模板比常规Django模板有什么限制?

时间:2009-05-22 16:31:29

标签: asp.net-mvc django templates ndjango

NDjango和Django模板之间是否存在任何差异,限制或缺陷?我特别感兴趣的是在未来的ASP.NET MVC项目中实现它们。

我确定我不能使用我为Django编写的任何自定义模板标签,但是我能将它们移植到NDjango吗?

1 个答案:

答案 0 :(得分:4)

是的,你愿意。您可以通过编写自己的默认标记和过滤器集并在应用程序启动时注册它们来扩展它们。要记住的只有一件事 - 过滤器意味着很容易扩展,所以你只需要实现两个直接接口中的一个(ISimpleFilter用于无参数过滤器或IFilter用于带有1个参数的过滤器)。对于标签,概念是相同的,但由于NDjango本身是用F#编写的,因此ITag接口从C#或VB中消耗起来有点困难。这肯定是可行的,但有点凌乱。从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作者之一。