为什么django不接受模板中的空格?

为什么django不接受模板中的空格?,django,Django,{%%}表示这是django模板分隔符。所以在{%}内部,我想空间应该无关紧要。 现在在示例中: <a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a> 这显示了预期的输出,而 <a href="{% url 'post_detail' pk = post.pk %}">{{ post.title }}</a> 正在显示错误。 为什么这对空白敏感?因为djang

{%%}
表示这是django模板分隔符。所以在
{%}
内部,我想空间应该无关紧要。
现在在示例中:

<a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a>

这显示了预期的输出,而

<a href="{% url 'post_detail' pk = post.pk %}">{{ post.title }}</a>

正在显示错误。

为什么这对空白敏感?

因为django模板是文本处理的,这是语法,您可以在
bash
中尝试同样的方法,这是离题的,但处理方式与语句对空白敏感的方式相同

在bash中有效

declare TEST=SOMETHING # is valid
declare TEST = SOMETHING # is invalid
在bash中无效

declare TEST=SOMETHING # is valid
declare TEST = SOMETHING # is invalid
(与django模板语言中相同)

如果您的问题是
为什么对空格敏感?
那么答案是
,因为语法。
有些语言区分大小写,有些不区分大小写,有些语言必须在每个变量前面加上美元($)。这只是语法问题。一切都是经过处理的,如果你想让你的电脑明白发生了什么,那么它必须用正确的语法正式表达出来


有Django文档:

Django模板标记允许您具有位置参数和命名参数,因此,如果您有一个空格,它将假定pk是第一个参数,=第二个参数,依此类推

因此,如果要传递命名参数,则必须使用=而不带空格,如果要使用位置参数,则不能使用=并仅用空格分隔它们