django-bootstrap5 模板语法错误

问题描述

我正在尝试将 Django-bootstrap 5 用于我的表单,在创建表单和我呈现模板的所有内容之后,就是这样。

{% extends "base.html" %}
{% load bootstrap5 %}
{% block content %}
<div class="container">
  <h1>Log In</h1>
  <form method="POST" class="form">
      {% csrf_token %}
      {% bootstrap_form form %}
      {% buttons %}
          <button type="submit" class="btn btn-primary">login</button>
      {% endbuttons %}
      {% endblock bootsrap_form %}
  </form>

</div>

{% endblock content %}

urls.py

path('login/',auth_views.LoginView.as_view(template_name='account/login.html'),name='login')

但是当我运行服务器时,我收到一个模板语法错误,告诉我它期待一个结束块,同时我已经有一个结束块,这是错误

TemplateSyntaxError at /account/login/
Invalid block tag on line 8: 'bootsrap_form',expected 'endblock'. Did you forget to register or load this tag?
Request Method: GET
Request URL:    http://127.0.0.1:8000/account/login/
Django Version: 3.2.4
Exception Type: TemplateSyntaxError
Exception Value:    
Invalid block tag on line 8: 'bootsrap_form',expected 'endblock'. Did you forget to register or load this tag?

错误界面返回的代码是这样的:

1   {% extends "base.html" %}
2   {% load bootstrap5 %}
3   {% block content %}
4   <div class="container">
5     <h1>Log In</h1>
6     <form method="POST">
7       {% csrf_token %}
8       {% bootsrap_form form%}
9       <input type="submit" class="btn btn-default" value="Login">
10    </form>
11  
12  </div>
13  
14  {% endblock content %}

我注意到:当我第一次运行服务器时,我通过将引导程序编写为引导程序而犯了一个错字,然后我修复了它,但是这个错误一直显示我从那以后删除的第一个代码。 我做了什么:因为我注意到了这一点,所以在我的视图中更改了模板名称以确保它没有找到模板并重新运行服务器,但最糟糕的是,同样的错误再次出现,不仅它不承认我对模板所做的更正,而不是它所做的只是重新调整我删除的第一个模板。 请注意,我也阅读了 Django-template 纪录片,但它没有解决

解决方法

很明显,这两个模板之间存在很大差异。 这可能发生在:

  • 您使用的库包含一些模板:如果您安装的应用列表(在设置中)的顺序不正确,则包含的模板可能具有优先权。
  • 您有多个 login.html 模板(可能会发生),您的视图会自动重定向到错误的模板。

最后但并非最不重要的一点:bootstrap5 有时令人困惑:4 和 5 之间存在巨大差异。如果您将 bootstrap5bootstrap4 启发的模板一起使用,您将进入无休止的麻烦,因为什么都行不通。