【发布时间】: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