1
resposta

[Dúvida] Django - Duvida ao utilizar Form, ModelForm ou HTML, CSS e JS

Galera,

Estou com uma duvida entre algumas possibilidades e peço por gentileza algumas opniões para resolver esse problema.

Estou estudando Front e quero trazer mais regras de validação de form para o front para melhorar a experiencia do usuario, porém quando uso o form e o model form tenho algumas dificuldades principalmente com muita abstração e dificuldade de incluir classes e IDs (Para estilização CSS e Regras em JS)

De toda forma, é muito pratico para capturar os dados que vem do post do form, da outra maneira que conheço teria que fazer o form em HTML, CSS e JS e capturar campo a campo com getitem.

Queria encontrar o meio termo entre esses dois, poder ter mais liberdade com o HTML, CSS e JS porém a facilidade na captura dos dados para otimizar a view.

Alguma sujestão nesse caso ?

1 resposta

Encontrei uma possibilidade na documentação, oque acham ? https://docs.djangoproject.com/en/4.1/topics/forms/#rendering-fields-manually

Porém ainda sinto a dificuldade por exemplo em como incluir uma classe no input desses caras para aplicar um RegEx em JS de validação do input

Rendering fields manually¶ We don’t have to let Django unpack the form’s fields; we can do it manually if we like (allowing us to reorder the fields, for example). Each field is available as an attribute of the form using {{ form.name_of_field }}, and in a Django template, will be rendered appropriately. For example:

{{ form.non_field_errors }}
<div class="fieldWrapper">
    {{ form.subject.errors }}
    <label for="{{ form.subject.id_for_label }}">Email subject:</label>
    {{ form.subject }}
</div>
<div class="fieldWrapper">
    {{ form.message.errors }}
    <label for="{{ form.message.id_for_label }}">Your message:</label>
    {{ form.message }}
</div>
<div class="fieldWrapper">
    {{ form.sender.errors }}
    <label for="{{ form.sender.id_for_label }}">Your email address:</label>
    {{ form.sender }}
</div>
<div class="fieldWrapper">
    {{ form.cc_myself.errors }}
    <label for="{{ form.cc_myself.id_for_label }}">CC yourself?</label>
    {{ form.cc_myself }}
</div>
Complete <label> elements can also be generated using the label_tag(). For example:

<div class="fieldWrapper">
    {{ form.subject.errors }}
    {{ form.subject.label_tag }}
    {{ form.subject }}
</div>