Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:基于类的视图可以';不呈酥脆状_Django_Forms_Django Forms_Django Class Based Views_Django Crispy Forms - Fatal编程技术网

Django:基于类的视图可以';不呈酥脆状

Django:基于类的视图可以';不呈酥脆状,django,forms,django-forms,django-class-based-views,django-crispy-forms,Django,Forms,Django Forms,Django Class Based Views,Django Crispy Forms,大家好 我很难用基于类的视图呈现一个清晰的表单。当我使用基于函数的视图时,一切都很好 像往常一样,我生成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 cla

大家好

我很难用基于类的视图呈现一个清晰的表单。当我使用基于函数的视图时,一切都很好

像往常一样,我生成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 %}
{%extends“base.html”%}
{%load crispy_forms_tags%}
{%block content%}
创建新项目
{%crispy form.helper%}
{%endblock%}
我的问题是Django会抱怨“variabledesnotexistat/item/add/,未能在…中查找键[helper]

crispy表单是否与基于类的视图兼容?如何提交帮助者信息以正确创建表单?


感谢您的帮助和建议。

表单中的构造函数太缩进了,这样它就属于表单的
类,但应该直接在
CreateItemForm中使用,而不是显示排除

fields ('field1','field2','field3')

这里用字段名替换字段1、字段2和字段3。你想展示给我看。这对我有用。

我留下了什么

{{form | crispy}}

而不是使用

%脆形%}


前者只会发出Django基于类的通用视图

你能提供更多的回溯数据吗?Hi-Nihal可能重复,看起来另一篇文章更新了(只有15天)。这是8个月前发布的。谢谢你的回答。是的,缩进是个问题。但是现在呈现的是完整的表单,而不仅仅是选定的字段(名称、描述)。我如何才能强制crispy表单关注字段集中的字段?这是另一个问题,但是尝试从表单的
Meta
类中删除
exclude
。谢谢你的建议,但它不起作用。仍然会显示完整的表单。作为一个快速解决方案,我声明了fields=。。。在Meta下,但是那样的话,我不能修改表单字段的外观。谢谢你的帮助!