Django crispy表单:在模板'bootstrap3/whole_uni_form.html'中解析变量'form_html'时出现异常

art*_*pov 4 python django python-3.x django-crispy-forms

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

我的表格类:

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())
Run Code Online (Sandbox Code Playgroud)

我的看法:

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})
Run Code Online (Sandbox Code Playgroud)

模板:

{% extends "base.html" %}

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

    {% load crispy_forms_tags %}
    {% crispy form %}
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

我尝试更新Django和django-crispy-forms,但没有用.请帮我解开这个谜.

sol*_*oke 8

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

您看到所有这些错误的原因是您已配置DEBUG级别日志记录.对模板执行此操作时,文档会说:

丢失的上下文变量记录为DEBUG消息.

这些错误无需担心,而且它的工作正常.

看看你的Github回购,看起来你可能已经开始了!

  • 谢谢.根据您的说法,我调整了日志记录设置以过滤掉Django模板错误.这是一个更清洁.我把赏金给了你. (2认同)