NDjango和Django模板之间是否有任何区别,限制或陷阱?我对将来在ASP.NET MVC项目中实现它们特别感兴趣。
我确定我将无法使用为Django编写的任何自定义模板标签,但可以将其移植到NDjango吗?
最佳答案
是的,你会的。您可以编写自己的标签并在应用程序启动时进行注册,从而扩展默认标签和过滤器集。只需记住一件事-过滤器本来应该很容易扩展,所以您只需要实现两个简单的接口之一(对于无参数过滤器,请使用ISimpleFilter;对于具有1个参数的过滤器,请使用IFilter)。对于标签,概念是相同的,但是由于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的作者之一。