繁体   English   中英

TemplateDoesNotExist 位于 /users/register/bootstrap5/uni_form.html

[英]TemplateDoesNotExist at /users/register/ bootstrap5/uni_form.html

我正在为我的 django 项目构建一个注册表单,并且为了对其进行造型,我使用的是脆的 forms。 但是,当我将服务器和 go 运行到我的注册页面时,我看到了这个错误:

    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 我认为这是我的脆皮表单中的错误,因为如果我删除表单中的脆皮模板标签,一切正常。

这是我的注册模板:

{% 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 %}

以防万一,这是我的观点 function:

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。 我哪里错了?

编辑:

所以我对这个主题做了更多的研究,这个错误可能是因为脆 forms 还不支持引导程序 5。 因此,通过在我的 CRISPY_TEMPLATE_PACK 中将 bootstrap5 更改为 bootstrap4,错误就解决了

基于最新的crispy form doc ,似乎没有内置的bootstrap5 你确定你使用的是bootstrap5吗?

目前只有bootstrap、bootstrap3、bootstrap4和uni-form。

如果您甚至看到bootstrap5文件夹,您可以查看您的文件结构。

正如您所说,您已经安装了 Krispy_forms 并添加到 settings.py 文件中的 installed_apps 中,那么下一步是使用以下代码: pip install crispy-bootstrap5 - 在您的命令行中

然后在您的 settings.py 文件中进行一些更改,如下所示:

CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"

CRISPY_TEMPLATE_PACK = "bootstrap5"

bootstrap 5 模板包将是一个单独的 package。 PyPI 上有一个非常早期的版本,这里是 GitHub 链接。

https://github.com/django-crispy-forms/crispy-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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM