Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在呈现表单时,Django 3.0是否与Jinja2兼容?_Python_Django_Jinja2 - Fatal编程技术网

Python 在呈现表单时,Django 3.0是否与Jinja2兼容?

Python 在呈现表单时,Django 3.0是否与Jinja2兼容?,python,django,jinja2,Python,Django,Jinja2,我正在Django3.0项目中使用Jinja2(通过DjangoJinja2.3.1) 它可以很好地呈现模板,但是当我想显示{{form}时,例如在LoginView中,我会得到以下错误: 应为标记“打印结束语句”,获得“:” 我追溯到了django/forms/templates/django/forms/widgets/input.html中的输入小部件,其呈现如下: <input type="{{ widget.type }}" name="{{ widget.name }}" {%

我正在Django3.0项目中使用Jinja2(通过DjangoJinja2.3.1)

它可以很好地呈现模板,但是当我想显示
{{form}
时,例如在
LoginView
中,我会得到以下错误:

应为标记“打印结束语句”,获得“:”

我追溯到了
django/forms/templates/django/forms/widgets/input.html
中的输入小部件,其呈现如下:

<input type="{{ widget.type }}" name="{{ widget.name }}"
{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"
{% endif %}{% include "django/forms/widgets/attrs.html" %}>      


Jinja似乎不接受
| stringformat:'s'
,这是否正确?这是否意味着它与Django表单不兼容?也许我遗漏了什么?

Django和Jinja形式的语法相似但不相同。因此,您无法使用Jinja2呈现Django模板。否,因为当您
{%include%}
Jinja2模板中的另一个模板时,所包含的模板也被假定为Jinja2模板。因此,您不能使用Django的内置小部件,因为它们需要Django模板呈现引擎。您可以通过复制django小部件并将其修复为适用于jinja2来创建自己的小部件(例如,
{s”%widget.value}}
将是jinja2的等价物),并将小部件类定义为django小部件的子类,然后使用您的模板。