python - 如何使用 jinja 创建文本表单?
问题描述
背景
我想用 jinja、Python 和 HTML 创建一个登录表单。
官方文档介绍了一个使用jinja的文本表单示例。
问题
但是,我在使用 jinja 创建文本表单时遇到了两个问题。我找不到网页上提到的“forms.html”文档。没有 Python 示例来执行用 HTML 和 jinja 编写的代码。
如何修复我当前的代码以在 jinja 中执行文本表单的示例程序?
程序
<!DOCTYPE html>
<html lang="en">
<head>
<title>Login Page</title>
</head>
<body>
{% from 'forms.html' import input as input_field, textarea %}
<dl>
<dt>Username</dt>
<dd>{{ input_field('username') }}</dd>
<dt>Password</dt>
<dd>{{ input_field('password', type='password') }}</dd>
</dl>
<p>{{ textarea('comment') }}</p>
{% endcall %}
</body>
</html>
解决方案
forms.html 是一个模板文件,它将提供文本框和文本区域的属性。
您必须在项目目录中包含模板文件并将它们加载到 python 文件中。
根据您引用的 forms.html 文件应包含以下代码。
{% macro input(name, value='', type='text') -%}
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">
{%- endmacro %}
{%- macro textarea(name, value='', rows=10, cols=40) -%}
<textarea name="{{ name }}" rows="{{ rows }}" cols="{{ cols
}}">{{ value|e }}</textarea>
{%- endmacro %}
推荐阅读
- android - Android约束布局横向划分
- python - 使用 for 循环将两个列表中的数据插入到 dict
- sql - 使用 SQL Server 的间隙和孤岛因 3 列而失败
- ios - 重复符号 ___llvm_profile_runtime
- akka - 发布者钝化后演员可以唤醒吗
- html - 渲染背景图像像素化 css
- javascript - 如何使用常见的 try-catch 来处理 Javascript 中的每个给定函数?
- mysql - 查询 PostgreSQL 返回 NoneType
- java - Selenium - 如何在第一次出现后跳过 Set 中的记录
- symfony - 作曲家找不到我安装的包