如何通过 id 值将属性添加到 html 元素 (python flask lxml)
How can I add an attribute to an html element by id value (python flask lxml)
我想为多个输入元素添加一个值属性。目前,我只是在使用一个可以工作但很麻烦的替换。有没有办法通过它的 ID 属性找到一个元素并简单地添加一个值属性?
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 + '">')
有没有办法在不使事情过于复杂的情况下做到这一点?
编辑:我在 lxml.html 文档中找到了一个鼓励我这样做的示例:
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 page
但是我总是收到关于传回应该是字符串的字节的错误。
因为您使用的是 render_template
,您可以简单地使用 Jinja
Jinja 帮助您在 html 页面中安全地呈现数据,并且无需安装任何东西,因为 render_template
方法已经使用了它。
您需要在 html 文件中指定类似占位符的内容,然后将值作为关键字传递给 render_template
您需要将其放入您的 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)" >
Now Jinja will search for a keyword (from what you've passed) named company and will substitute its value in place pf {{company}}
要将值传递给 Jinja,只需在您的 python 代码中使用这一行
company_value = "Some Value"
page = render_template('template.html', company=company_value)
现在当 Jinja 看到 {{company}}
时,它将用传递的值替换它,即 company_value = "Some Value"
的值
Note that you can pass as much values as you want
Jinja 有更多功能可以帮助您呈现数据,例如:
- 循环
- if else 语句
- 还有更多
快速查看此文档Jinja
我想为多个输入元素添加一个值属性。目前,我只是在使用一个可以工作但很麻烦的替换。有没有办法通过它的 ID 属性找到一个元素并简单地添加一个值属性?
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 + '">')
有没有办法在不使事情过于复杂的情况下做到这一点?
编辑:我在 lxml.html 文档中找到了一个鼓励我这样做的示例:
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 page
但是我总是收到关于传回应该是字符串的字节的错误。
因为您使用的是 render_template
,您可以简单地使用 Jinja
Jinja 帮助您在 html 页面中安全地呈现数据,并且无需安装任何东西,因为 render_template
方法已经使用了它。
您需要在 html 文件中指定类似占位符的内容,然后将值作为关键字传递给 render_template
您需要将其放入您的 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)" >
Now Jinja will search for a keyword (from what you've passed) named company and will substitute its value in place pf
{{company}}
要将值传递给 Jinja,只需在您的 python 代码中使用这一行
company_value = "Some Value"
page = render_template('template.html', company=company_value)
现在当 Jinja 看到 {{company}}
时,它将用传递的值替换它,即 company_value = "Some Value"
Note that you can pass as much values as you want
Jinja 有更多功能可以帮助您呈现数据,例如:
- 循环
- if else 语句
- 还有更多
快速查看此文档Jinja