首页 > 解决方案 > 如何使用 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>

标签: pythonhtmlformsjinja2

解决方案


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 %}

推荐阅读