2

Stackoverflow の皆さん、こんにちは。

クラスベースのビューでサクサクしたフォームをレンダリングするのに問題があります。関数ベースのビューを使用すると、すべてが正常に機能しました。

いつものように、次のように 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 ...」と文句を言うことです。

クリスピー フォームはクラス ベースのビューと互換性がありますか? ヘルパー情報を渡してフォームを正しく作成するにはどうすればよいですか?

あなたの助けと提案に感謝します。

4

3 に答える 3

7

フォームのコンストラクターがインデントされすぎています。このように、フォームのMetaクラスに属していますが、直接にある必要がありますCreateItemForm

于 2012-08-21T10:02:08.790 に答える
0

除外を表示する代わりにこれを使用します

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

ここで、field1 と field2 と field3 を実際のフィールド名に置き換えます。あなたが見せたいもの.これは私のために働く.

于 2013-04-26T09:41:33.553 に答える
0

私が残したものは何だったのか

{{フォーム|クリスピー}}

使用する代わりに

% カリッとした形 %}

前者は、Django のジェネリック クラス ベースのビューのみを発行します。

于 2015-05-26T13:58:05.793 に答える