Me gustaría agregar un atributo de valor a varios elementos de entrada. Actualmente, simplemente estoy usando un reemplazo que funciona pero es engorroso. ¿Hay alguna manera de encontrar un elemento por su atributo ID y simplemente agregar un atributo de valor?
page = render_template('template.html') page = page.replace('<input type="text" class="form-control" id="Company" name="Company" placeholder="Company name" data-bs-toggle="tooltip" title="The name of the company that the document is for." onblur="titleCase(this)">', '<input type="text" class="form-control" id="Company" name="Company" placeholder="Company name" data-bs-toggle="tooltip" title="The name of the company that the document is for." onblur="titleCase(this)" value="' + company + '">')¿Hay alguna manera de hacer esto sin complicar demasiado las cosas?
EDITAR: Encontré este ejemplo en la documentación de lxml.html que me animó a hacer esto:
def fillForm1(page, pDate, company, manager, cAddress, cPhone, cEmail ,sAddress): form_page = fromstring(page) form = form_page.forms[0] form.fields = dict( pDate=pDate, Company=company, Manager=manager, cAddress=cAddress, cPhone=cPhone, cEmail=cEmail, sAddress=sAddress ) page = page.replace('<form method="post">', tostring(form, pretty_print=True, encoding='UTF-8', with_tail=False,)) return pagePero sigo recibiendo un error sobre devolver un byte cuando debería ser una cadena.
Ya que está utilizando render_template , simplemente puede usar Jinja
Jinja lo ayuda a representar sus datos donde quiera en la página html de manera segura y sin necesidad de instalar nada, ya que el método render_template ya lo usa.
Debe especificar algo como un marcador de posición en su archivo html y luego pasarle un valor como palabra clave a render_template
necesitas poner esto en tu archivo HTML
<input value="{{company}}" type="text" class="form-control" id="Company" name="Company" placeholder="Company name" data-bs-toggle="tooltip" title="The name of the company that the document is for." onblur="titleCase(this)" >Ahora Jinja buscará una palabra clave (de lo que ha pasado) llamada empresa y sustituirá su valor en el lugar pf
{{company}}
para pasar el valor a Jinja simplemente use esta línea en su código python
company_value = "Some Value" page = render_template('template.html', company=company_value) Ahora, cuando Jinja vea {{company}} , lo reemplazará con el valor pasado, que es el valor de company_value = "Some Value"
Tenga en cuenta que puede pasar tantos valores como desee
Jinja tiene más funciones que lo ayudan a procesar sus datos como:
Consulta esta documentación para echar un vistazo rápido a Jinja