django前端真的是麻烦,后端数据模型写好之后主要是要靠前端的bootstrap v5进行渲染。
Django后端给前端提供的form是直接{{ form }}的形式,而bootstrap则是要求在html内修改class这样的操作来进行渲染的。这就遇到问题,class无法直接对{{ form }}进行渲染.
遇到这样的情况,我们用的是bootstrap5,所以需要两个包
- 安装:
pip3 install crispy-bootstrap5
pip3 install django-crispy-forms
- 配置settings.py
INSTALLED_APPS = [
...,
'crispy_forms',
'crispy_bootstrap5',
]
然后底部加上:
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"
- 前段html
顶部导入:{% load crispy_forms_tags %}
在你需要渲染的form后面加上过滤{{ form|crispy }}
单个字段如下:{{ form.username|as_crispy_field }}
<form class="needs-validation mb-2" method="post" role="form">
{% csrf_token %}
<div class="position-relative mb-4">{{ form.username|as_crispy_field }}</div>
<div class="mb-4">
<div class="password-toggle form-label fs-base">
{{ form.password|as_crispy_field }}
</div>
</div>
<button type="submit" class="btn btn-primary shadow-primary btn-lg w-100">Sign in</button>
</form>
参考:https://blog.csdn.net/grkcsdn/article/details/118468053
参考:https://stackoverflow.com/questions/65238459/templatedoesnotexist-at-users-register-bootstrap5-uni-form-html