Llevo programando en Django desde hace varios años; y una de las cosas con la que te topas siempre son los formularios. Django tiene su propia forma de manejar formularios, bastante robusta, pero me caga que tengas que meter los classnames o meter widgets para darle forma a algo que puede ser muy simple tenerlo solo con HTML, es por eso que hoy les hablaré de la forma en la que yo prefiero crear y manejar mis formularios.
Back to the basic
Django es un framework bastante robusto, y me encanta usarlo en todos mis proyectos; pero hay ocaciones en las que tienes que ir por lo básico al momento de querer personalizar algo; en este caso, los formularios.
En este ejemplo voy a compartir una vista en django para el cambio de contraseña de una cuenta.
Es una vista básica con un Mixin que verifica que el usuario esté logueado, luego un dispatch para settear algunas variables, en este caso mi settings, y luego en mi get renderizo mi template.
El template es un HTML bastante simple que ya maneja mis traducciones, tiene algo más personalizado en el HTML, sin tener que hacer toda la parafernalia en un form en django, al final cuando haga submit irá a mi función post de mi vista.
Mi modelo maneja las validaciones correspondientes y hace el cambio de contraseña para luego hacer un redirect con un success, en caso encuentre algún error o errores lo agregar a mi variable errors del scope y devuelve un get.