0

私のフォームが example.html に表示されないのはなぜですか?

2 つの関数が同じrender_to_responseテンプレート名 (example.html) を持つことはできませんか?

モデル:

class A(models.Model):
    name = models.CharField(max_length=255)
    quantity = models.IntegerField(default=1)

ビュー

def show(request):
    a = A.objects.all()
    if request.method == 'POST':
        form = XForm(request.POST)
        if form.is_valid():
            f = form.cleaned_data['f']


            return HttpResponseRedirect('/')
    else:
        form = XForm()
    return render_to_response('example.html', {'a': a, 'form': form})


def show_f(request, a_id):
    #how to access to data from form?
    f = form.cleaned_data['f']
    A.objects.filter(id = a_id).update(quantity = f)

    return render_to_response('example.html')

example.html:

{% for x in a %}
{{ x.name }}

        <form action="/show_f/{{x.id}}/" method="post"/>
        {{form}}
        <input type="submit" value="Run"/>
        </form>
{% endfor %}

編集:

データベースの各オブジェクトにフォーム フィールドを表示し、数量を入力してフォームを送信した後、show_f メソッド (UPDATE 数量) を実行したいと考えています。

4

2 に答える 2

2

これがどのように機能することを期待していますか?showテンプレートをレンダリングする場合、a存在しますが存在しformないため、空のフォームのセットが取得されます。Ifshow_fがテンプレートをレンダリングする場合はform存在しますが存在しaないため、for ループには反復するものがなく、結果は空になります。

正確に何をしようとしていますか?2 つのビューが同じテンプレートをレンダリングすることに問題はありませんが、どちらもテンプレートがレンダリングする必要がある情報を実際に提供する必要があります。

于 2012-10-10T12:56:54.370 に答える
0

ここで説明したように: https://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

フォームは、たとえば {{ form.as_ul }} を使用してレンダリングする必要があります。

于 2012-10-10T12:54:38.683 に答える