2.8 KiB
Tags
- autoescape
- block
- comment
- csrf_token
- cycle
- debug
- extends
- filter
- firstof
- for
- if
- ifchanged
- include
- load
- lorem
- now
- partial
- partialdef
- querystring
- regroup
- resetcycle
- spaceless
- templatetag
- url
- verbatim
- widthratio
- with
Filters
- add
- addslashes
- capfirst
- center
- cut
- date
- default
- default_if_none
- dictsort
- dictsortreversed
- divisibleby
- escape
- escapejs
- escapeseq
- filesizeformat
- first
- floatformat
- force_escape
- get_digit
- iriencode
- join
- json_script
- last
- length
- linebreaks
- linebreaksbr
- linenumbers
- ljust
- lower
- make_list
- phone2numeric
- pluralize
- pprint
- random
- rjust
- safe
- safeseq
- slice
- slugify
- stringformat
- striptags
- time
- timesince
- timeuntil
- title
- truncatechars
- [-] truncatechars_html
- truncatewords
- [-] truncatewords_html
- unordered_list
- upper
- urlencode
- urlize
- urlizetrunc
- wordcount
- wordwrap
- yesno
Doing
- filter — super útil (ex.: {{ var|upper }})
- autoescape — segurança importante
- spaceless — remove espaços em branco
- verbatim — como raw
- url — reverse de URLs (quando tiver routing)
- cycle — alternar valores em loop
- firstof — fallback de variáveis
- load — para custom tags/filters (futuro)
- csrf_token — quando tiver web
To do
1 - Finalizar o parser — completar as tags que faltam da lista:
- debug
- lorem
- partial / partialdef
- querystring
- regroup
- resetcycle
- templatetag
- widthratio
2 - projetar o Context com calma:
- Estrutura hierárquica (escopos aninhados para with, for, etc.)
- Suporte a variáveis, listas, structs (models)
- Acesso por ponto (obj.atributo, lista.0, etc.)
- Fallback silencioso ou erro (como no Django)
3 - Renderer — com:
-
Resolução de variáveis
-
Aplicação de filtros
-
Herança com block.super
-
Loops com forloop
-
Tudo testado
-
Renderer básico — variáveis simples {{ nome }} (já quase pronto acima)
-
Filtros em variáveis — {{ nome|upper }}, {{ idade|add:5 }}
-
Escaping automático — tudo escapa por default, {{ valor|safe }} não escapa
-
Tags básicas — {% if %}, {% for %}, {% block %}
-
Extends / include
-
Autoescape on/off
-
Adicionar suporte a argumentos nos filtros (já quase pronto — parsear name:arg)
-
Implementar tags básicas (if/for) usando a árvore do parser
-
Autoescape completo (escape só em .string, e tratar .safe se quiser)
-
Blocos e extends (usando a árvore para coletar blocos e renderizar base)