Skip to content

Instantly share code, notes, and snippets.

@WellingtonFonseca
Last active February 26, 2024 04:44
Show Gist options
  • Save WellingtonFonseca/9c3e6e95f491d2db5361ef4955868892 to your computer and use it in GitHub Desktop.
Save WellingtonFonseca/9c3e6e95f491d2db5361ef4955868892 to your computer and use it in GitHub Desktop.
overwriting django widgets templates - sobrescrevendo os templates do django widgets

Introdução

django 4.1

Creio que se você chegou até aqui, significa que está procurando uma solução de customizar os templates widgets padrões do django, ou seja, nada daqueles inputs quadrados de .html

Muitas soluções me foi dado, mas nenhuma como esta, por isso estou deixando aqui registrado para futuras consultas. Como apenas trocar os .htmls padrões que são renderizados pelo form padrão do django, com classes customizadas?

Solução

Acessando o seguinte caminho .venv/lib/python3.10/site-packages/django/forms/templates/django/forms/widgets (que aqui no meu caso estou utilizando .venv), você vai encontrar todos os .htmls que o django utiliza para renderizar os componentes do form, que então queremos customiza-los.

  1. copie a pasta form
  2. na raiz do seu projeto crie templates/django/
  3. cole a pasta
  4. agora em settings.py adicione "django.forms", em INSTALLED_APPS
  5. agora em uma linha em branco, adicione a seguinte variável FORM_RENDERER = "django.forms.renderers.TemplatesSetting"
  6. ainda em settings.py localize TEMPLATES = [...] e mude "APP_DIRS" para True
  7. e acrescente em "DIRS", os.path.join(BASE_DIR, "templates")

ao final o seu TEMPLATES = [...] ficará próximo ou idem a isso:

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [os.path.join(BASE_DIR, "templates")],
        "APP_DIRS": True,
        ...

Esta feito, agora todos os widgets passarão a ser consumidos do seu template configurado.

@rg3915
Copy link

rg3915 commented Feb 26, 2024

Muito bom. Vale lembrar que o fonte original está aqui
https://github.com/django/django/tree/main/django/forms/templates/django/forms/widgets

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment