【问题标题】:Django crispy forms: Exception while resolving variable 'form_html' in template 'bootstrap3/whole_uni_form.html'Django 脆表单:在模板“bootstrap3/whole_uni_form.html”中解析变量“form_html”时出现异常
【发布时间】:2016-07-16 07:45:17
【问题描述】:

我正在制作我的第一个 Django 应用程序,我决定使用 Crispy 表单。当我访问我的视图时,它会抛出一堆奇怪的errors(我粘贴它们是因为列表真的,真的很大)。奇怪的是,表单实际上渲染正确。

我的表单类:

def _article_form_widget():
    return forms.Textarea(
        attrs={'rows': 30}
        )

# [...] Some other forms

class NewArticleForm(forms.Form):

    """New article form"""
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id  = 'new_article_form'

        self.helper.add_input(Submit('submit', 'Submit'))

    name = forms.CharField(label='Article name', max_length=1100)
    slug = forms.SlugField(label='Article slug', max_length=1100)
    body = forms.CharField(label='Article body', widget=_article_form_widget())

我的看法:

class NewArticleView(FormView):

    form_class = NewArticleForm
    template_name = 'wiki/new_article.html'

    def form_valid(self, form):
        with transaction.atomic():
            self.article = Article(body=form.cleaned_data['body'])
            self.article.save()
            self.main_alias = Alias(
                name=form.cleaned_data['name'],
                slug=form.cleaned_data['slug'],
                article=self.article
            )
            self.main_alias.save()
        return super().form_valid(form)

    def get_success_url(self):
        return reverse_lazy('article-detail',
                            kwargs={'slug': self.main_alias.slug})

模板:

{% extends "base.html" %}

{% block content %}
    <h1>New article</h1>

    {% load crispy_forms_tags %}
    {% crispy form %}
{% endblock content %}

我尝试更新 Django 和 django-crispy-forms,但无济于事。请帮我解开这个谜。

【问题讨论】:

  • 仅供参考:repo 在这里:github.com/art-solopov/mdwiki。我现在几乎已经放弃了脆皮表格,而是编写自己的自定义标签。

标签: python django python-3.x django-crispy-forms


【解决方案1】:

这里没有错。脆皮模板查找可能存在也可能不存在的tag 上下文变量,并相应地渲染内容。

您看到所有这些错误的原因是您配置了DEBUG 级别的日志记录。为 templates 完成此操作后,文档会说:

缺少的上下文变量被记录为 DEBUG 消息。

这些错误无需担心,它可以正常工作。

查看您的 Github 存储库,您似乎已经继续前进了!

【讨论】:

  • 哦,非常感谢!这些缺失的上下文变量会导致我的测试失败吗?这是我进行调查的主要原因。
  • 我确实继续前进,但只是为了拥有一个通过测试的工作应用程序。我强烈怀疑我的自定义标签无法正确处理某些小部件(如单选按钮)。
  • 不要认为它会影响您的测试,但这取决于您遇到了什么失败?一般来说,在 django.template 上进行调试日志记录会给您带来太多噪音,除非您尝试调试某些特定问题,所以不妨尝试将其关闭。
  • 噢,愚蠢的我。测试失败,因为我在重命名后忘记更新字段名称。在我删除模板日志后,这变得非常明显。非常感谢!
  • 谢谢。根据您所说,我调整了日志记录设置以过滤掉 Django 模板错误。这是一个更清洁的东西。我已将赏金授予你。
猜你喜欢
  • 2015-03-20
  • 2017-09-25
  • 2023-03-23
  • 1970-01-01
  • 2012-09-30
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
相关资源
最近更新 更多