Django:基于类的视图无法呈现清晰的表单
Posted
技术标签:
【中文标题】Django:基于类的视图无法呈现清晰的表单【英文标题】:Django: Class based view can't render crispy form 【发布时间】:2012-08-16 15:42:30 【问题描述】:你好 *** 的人,
我无法使用基于类的视图呈现清晰的表单。当我使用基于函数的视图时,一切正常。
像往常一样,我生成 forms.py 如下:
from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Submit, html, Button, Row, Field
from item.models import Item
class CreateItemForm(forms.ModelForm):
class Meta:
model = Item
exclude = ('user',)
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_tag = False
self.helper.form_class = 'form-horizontal'
self.helper.layout = Layout(
Fieldset(
'Create your item here',
'name', 'description',
'save',
),
)
self.request = kwargs.pop('request', None)
return super(CreateItemForm, self).__init__(*args, **kwargs)
视图函数非常简单标准:
from django.views.generic.edit import CreateView,
from item.models import Item
from item.forms import CreateItemForm
class ItemCreate(CreateView):
form_class = CreateItemForm
model = Item
template_name = 'item/item_create_form.html'
模板也遵循最少的说明:
% extends "base.html" %
% load crispy_forms_tags %
% block content %
<h2>Create new Item</h2>
<form action="." class="crispy form-horizontal" method="post">
% crispy form form.helper %
</form>
% endblock %
我的问题是 Django 会抱怨“VariableDoesNotExist at /item/add/, Failed lookup for key [helper] in ...”。
清晰的表单是否与基于类的视图兼容?我怎样才能交出帮助信息以正确创建表单?
感谢您的帮助和建议。
【问题讨论】:
能否提供更多的traceback数据? Django - Have a class based view and Crispy form parrallell to each other on same page的可能重复 嗨 Nihal,看起来另一篇文章较新(只有 15 天)。这是 8 个月前发布的。 【参考方案1】:我留下了什么让我失望
形式|酥脆
而不是使用
% 酥脆形式 %
前者只会发出 Django 的基于通用类的视图
【讨论】:
【参考方案2】:使用它而不是显示排除
fields ('field1','field2','field3')
这里将 field1 和 field2 和 field3 替换为您的字段名称。你想展示的。这对我有用。
【讨论】:
【参考方案3】:你的表单中的构造函数太缩进了,这样就属于表单的Meta
类,但应该直接在CreateItemForm
中
【讨论】:
感谢您的回答。是的,缩进是个问题。但现在呈现完整的表单,而不仅仅是选定的字段(名称、描述)。如何强制清晰的表单专注于 Fieldset 中的字段? 这是另一个问题,但请尝试从表单的Meta
类中删除 exclude
感谢您的建议,但没有奏效。仍然显示完整的表格。作为一个快速的解决方案,我在 Meta 下声明了 fields = ...,但是这样,我无法修改表单字段的外观。感谢您的帮助!以上是关于Django:基于类的视图无法呈现清晰的表单的主要内容,如果未能解决你的问题,请参考以下文章