在crispy forms上查找u'中的键[form]失败

2024-09-29 19:36:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我单击submit按钮时,我总是在u'(…)中查找键[form]失败。我不知道发生了什么事,也不知道为什么。我不知道是酥脆,形状或观点问题。也许一个提示是我把extra=1放在formset中,但只显示了1行。在

在表单.py在

class CotizacionForm(forms.ModelForm):
    class Meta:
        model = Cotizacion
        fields = ('fecha', 'local','estado_pago','estado_trabajo','detalle_monto', 'observacion',)
        widgets = {'fecha': forms.DateInput(attrs={'id': 'datetimepicker12'})}



    def __init__(self, *args, **kwargs):
        super(CotizacionForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'id-cotizacion-form'
        self.helper.form_method = 'post'
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'col-lg-3 text-left'
        self.helper.field_class = 'col-lg-9'
        self.helper.layout = Layout(
                Div(
                    Field('fecha',style="margin-bottom: -10px;"),
                    Field('local',style="margin-bottom: -10px;"),
                    Field('estado_trabajo', style="margin-bottom: -10px;"),
                    Field('estado_pago', style="margin-bottom: -10px;"),
                    Field('detalle_monto', style="margin-bottom: -10px;"),
                    css_class="col-lg-6"
                    ),
                Div(

                    Field('observacion',style="max-height: 100px;"),
                    css_class="col-lg-6"
                    ),
                )



class TrabajoForm(forms.ModelForm):
    class Meta:
        model = Trabajo

        fields = ('unidad','valor','actividad','cuadrilla')

    descripcion = forms.CharField(
            label = "Escriba el detalle del trabajo",
            max_length = 200,
            required = True,
            )

    def __init__(self, *args, **kwargs):
        super(TrabajoForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'id-trabajo-form'
        self.helper.form_method = 'post'
        # self.helper.form_action = reverse('submit_form')
        # self.helper.add_input(Submit('submit', '+', css_class='btn btn-rounded btn-sm btn-icon btn-default text-right'))
        self.helper.form_class = 'form-inline col-lg-12'
        self.helper.field_template = 'bootstrap3/layout/inline_field.html'
        self.helper.layout = Layout(
                Div(
                    InlineField('descripcion', 
                        style="width:650px"
                        ),
                    'unidad',
                    'valor',
                    'actividad',
                    'cuadrilla',
                    HTML("<a class=" + "delete-row" + " href=" + "javascript:void(0)" + "><i class=" + "'fa fa-trash-o fa-lg icon text-danger-dker'" + "></i>  </a>"),
                    style='margin-bottom:5px',
                    # css_class="col-lg-12"
                    ),
                ButtonHolder(
                Submit('submit', 'Submit', css_class='button white')
            )
                    )

在视图.py在

^{pr2}$

科蒂齐翁_编辑.html在

                <div class="col-lg-12">
                    <div class="row">
                        {% crispy form %}
                    </div>
                    <hr>
                    <p>Detalle de los Trabajos:</p>
                    <div class="row link-formset">
                        {% crispy formset formset.form.helper %}
                    </div>
                </div>
                <form method='POST' action=''>
                {% csrf_token %}
                <div class="col-lg-12 ">
                    <br>
                    <input type="submit"  class="btn btn-sm btn-block btn-primary"></input> 
                    <br>
                </div>
                </form>
            </div>

在网址.py在

(...)
url(r'^cotizacion/new/$', views.cotizacion_new, name='cotizacion_new'),
    url(r'^cotizacion/edit/(?P<cotizacion_id>[0-9]+)/$', views.cotizacion_new, name='cotizacion_edit'),
    url(r'^cotizacion/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='cotizacion_detail'),

环境:

请求方式:POST 请求URL:http://localhost:8000/erp/cotizacion/new/

Django版本:1.11.4 Python版本:2.7.10

Installed Applications:
['erp.apps.ErpConfig',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'crispy_forms']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

模板错误:

回溯:

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/core/handlers/异常.py“在里面 41response=get_response(请求)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/core/handlers/基准.py“在旧得到响应 249响应=自身。获取响应(请求)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/core/handlers/基准.py“在你得到你的回应 187响应=self.process\u异常\u by_中间件(e,请求)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/core/handlers/基准.py“在你得到你的回应 185response=wrapped_callback(请求,*callback_args,**callback_kwargs)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/contrib/auth/装饰工.py“在“包装”视图中 23return view_func(请求,*args,**kwargs)

文件“/Applications/MAMP/htdocs/italuzbi/erp/视图.py“在科蒂齐翁新 76return render(请求,'erp/cotizacion_编辑.html“,{form”:窗体,“formset”:窗体集})

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/快捷方式.py“呈现中 30内容=loader.render_to_字符串(模板名,上下文,请求,using=using)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/加载程序.py“在render_to_字符串中” 68返回模板.render(上下文,请求)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/backends/django.py“呈现中 66返回self.template.render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“呈现中 207返回self.\u render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“内渲染 199返回self.nodelist.render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“呈现中 990位=node.render_注释(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“在render_注释中 957返回自渲染(上下文)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/loader_标签.py“呈现中 177返回已编译的\u parent.\u render(context)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“内渲染 199返回self.nodelist.render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“呈现中 990位=node.render_注释(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“在render_注释中 957返回自渲染(上下文)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/loader_标签.py“呈现中 72结果= block.nodelist.render(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“呈现中 990位=node.render_注释(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“在render_注释中 957返回自渲染(上下文)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/crispy_forms/templatetags/crispy_forms_标签.py“呈现中 215c=self.get_呈现(上下文)

File“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/crispy_forms/templatetags/crispy_forms_标签.py“在get_render中 109助手=帮助程序。解析(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“决心 849value=self.\u resolve_lookup(上下文)

文件“/Applications/MAMP/htdocs/italuzbi/italuzvenv/lib/python2.7/site-packages/django/template/基准.py“在“解析”查找中 903(bit,current))#缺少属性


Tags: djangopyselfformlibpackagessitetemplate
2条回答

我认为问题在于调用{% crispy formset.form.helper %}-表单集没有form属性。请参阅the crispy docs以了解如何将该标记与表单集一起使用。在

如果要在同一模板中处理2个或多个表单,并将“提交”按钮放在表单外部,则必须移除表单标记:

self.helper.form_tag = False

文档位于http://django-crispy-forms.readthedocs.io/en/d-0/tags.html

相关问题 更多 >

    热门问题