/users/register/bootstrap5/uni_form.html 处的模板不存在
TemplateDoesNotExist at /users/register/ bootstrap5/uni_form.html
我正在为我的 django 项目构建注册表单,并且为了设计它的样式,我使用了 crispy 表单。但是,当我 运行 我的服务器并转到我的注册页面时,我看到这个错误:
Internal Server Error: /users/register/
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 988, in render
output = self.filter_expression.resolve(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 698, in resolve
new_obj = func(obj, *arg_vals)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\crispy_forms\templatetags\crispy_forms_filters.py", line 60, in as_crispy_form
template = uni_form_template(template_pack)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\crispy_forms\templatetags\crispy_forms_filters.py", line 21, in uni_form_template
return get_template("%s/uni_form.html" % template_pack)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: bootstrap5/uni_form.html
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Dell\Desktop\Django\microblog\microblog_project\users\views.py", line 17, in register
return render(request, 'users/register.html',context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 63, in render
reraise(exc, self.backend)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 84, in reraise
raise new from exc
django.template.exceptions.TemplateDoesNotExist: bootstrap5/uni_form.html
这看起来不像我通常看到的 TemplateDoesNotExistError
。我认为这是我的 crispy 表单中的错误,因为如果我删除表单中的 crispy 模板标签,一切正常。
这是我的注册模板:
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block title %}Register{% endblock %}
{% block content %}
<h1>Sign up for a new account</h1>
<hr>
<form action="" method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-sm btn-primary">Register</button>
</form>
<p>
Already have an account?
<a href="#">Log in</a>
</p>
{% endblock %}
为了以防万一,这是我的视图函数:
def register(request):
form = RegistrationForm()
if request.method == 'POST':
form = RegistrationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponse("Successfully Registered!!!")
context = {
'form':form,
}
return render(request, 'users/register.html',context)
我在我的 settings.py 中指定了 CRISPY_TEMPLATE_PACK,并且还在我的 INSTALLED_APPS 中添加了 crispy_forms。我哪里错了?
编辑:
所以我对这个话题做了更多的研究,这个错误可能是因为脆皮表格还不支持 bootstrap 5。因此,通过将我的 CRISPY_TEMPLATE_PACK 中的 bootstrap5 更改为 bootstrap4,错误就解决了
Based on the latest crispy form doc,好像没有内置的bootstrap5
。您确定要使用 bootstrap5
吗?
目前只有bootstrap、bootstrap3、bootstrap4、统一形式
如果您甚至看到 bootstrap5
个文件夹,您可以查看您的文件结构。
bootstrap5 模板包将是一个单独的包。 PyPI 上有一个非常早期的版本,这里是 GitHub link.
如您所说,您已安装 crispy_forms 并添加到 settings.py 中的 installed_apps
文件然后下一步是使用以下代码:
pip install crispy-bootstrap5 - 在你的命令行中
然后在您的 settings.py 文件中进行如下更改:
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"
我也 运行 这个问题,但是 crispy-form 已经支持 boostrap 5。在他们的 github 页面中是这样指示的
$ pip install django-crispy-forms
$ pip install crispy-bootstrap5
并且在settings.py
INSTALLED_APPS = [
...,
'crispy_forms',
'crispy_bootstrap5', # Forgetting this was probably your error
]
然后在页面底部settings.py
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"
这对我解决了 TemplateDoesNotExist 错误很有帮助。无需降级到 bootstrap4
我正在为我的 django 项目构建注册表单,并且为了设计它的样式,我使用了 crispy 表单。但是,当我 运行 我的服务器并转到我的注册页面时,我看到这个错误:
Internal Server Error: /users/register/
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 988, in render
output = self.filter_expression.resolve(context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 698, in resolve
new_obj = func(obj, *arg_vals)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\crispy_forms\templatetags\crispy_forms_filters.py", line 60, in as_crispy_form
template = uni_form_template(template_pack)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\crispy_forms\templatetags\crispy_forms_filters.py", line 21, in uni_form_template
return get_template("%s/uni_form.html" % template_pack)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: bootstrap5/uni_form.html
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Dell\Desktop\Django\microblog\microblog_project\users\views.py", line 17, in register
return render(request, 'users/register.html',context)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 63, in render
reraise(exc, self.backend)
File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 84, in reraise
raise new from exc
django.template.exceptions.TemplateDoesNotExist: bootstrap5/uni_form.html
这看起来不像我通常看到的 TemplateDoesNotExistError
。我认为这是我的 crispy 表单中的错误,因为如果我删除表单中的 crispy 模板标签,一切正常。
这是我的注册模板:
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block title %}Register{% endblock %}
{% block content %}
<h1>Sign up for a new account</h1>
<hr>
<form action="" method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-sm btn-primary">Register</button>
</form>
<p>
Already have an account?
<a href="#">Log in</a>
</p>
{% endblock %}
为了以防万一,这是我的视图函数:
def register(request):
form = RegistrationForm()
if request.method == 'POST':
form = RegistrationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponse("Successfully Registered!!!")
context = {
'form':form,
}
return render(request, 'users/register.html',context)
我在我的 settings.py 中指定了 CRISPY_TEMPLATE_PACK,并且还在我的 INSTALLED_APPS 中添加了 crispy_forms。我哪里错了?
编辑:
所以我对这个话题做了更多的研究,这个错误可能是因为脆皮表格还不支持 bootstrap 5。因此,通过将我的 CRISPY_TEMPLATE_PACK 中的 bootstrap5 更改为 bootstrap4,错误就解决了
Based on the latest crispy form doc,好像没有内置的bootstrap5
。您确定要使用 bootstrap5
吗?
目前只有bootstrap、bootstrap3、bootstrap4、统一形式
如果您甚至看到 bootstrap5
个文件夹,您可以查看您的文件结构。
bootstrap5 模板包将是一个单独的包。 PyPI 上有一个非常早期的版本,这里是 GitHub link.
如您所说,您已安装 crispy_forms 并添加到 settings.py 中的 installed_apps 文件然后下一步是使用以下代码: pip install crispy-bootstrap5 - 在你的命令行中
然后在您的 settings.py 文件中进行如下更改:
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"
我也 运行 这个问题,但是 crispy-form 已经支持 boostrap 5。在他们的 github 页面中是这样指示的
$ pip install django-crispy-forms
$ pip install crispy-bootstrap5
并且在settings.py
INSTALLED_APPS = [
...,
'crispy_forms',
'crispy_bootstrap5', # Forgetting this was probably your error
]
然后在页面底部settings.py
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"
这对我解决了 TemplateDoesNotExist 错误很有帮助。无需降级到 bootstrap4