да, вы бы. Вы можете расширить набор тегов и фильтров по умолчанию, написав свой собственный и зарегистрировав их при запуске приложения. есть только одна вещь, которую нужно иметь в виду - фильтры должны были быть очень легко расширены, и поэтому вам просто нужно реализовать один из двух простых интерфейсов (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.