0

私はdjangoを初めて使用し、練習のために、使い慣れた「todolist」アプリの独自のバージョンをプログラムしようとしています。

ユーザーが入力したすべてのToDoリスト項目と、各項目を編集するためのボタンを表示するページがあります。編集ボタンは、アイテムへの変更を入力するためのフォームを含む別のページにユーザーを送信します。

ユーザーがアイテムに関するすべてを変更することが可能です。明らかにrequest.POSTは、ユーザーがフォームに入力したすべての情報を提供しますが、この情報を使用して、ユーザーが最初にクリックしたアイテムの情報を書き換えたいと思います。では、元のアイテムが何であるかを確認するために、ビューコードをどのように記述すればよいでしょうか。

フォーム送信ボタンを次のようにフォーマットできると思います。

<button type="submit" name="save" value={{ item.pk }}>Save</button>

その方法で主キーを取得します

しかし、2つのアイテムを編集ページに渡し、ユーザーがそれらを組み合わせることができるようにしたいとします。繰り返しになりますが、次のようにすることで、これらのアイテムが何であるかを理解できました。

<button type="submit" name="save" value='{{ item1.pk }} {{ item2.pk }}'>Save</button>

それから

request['save'].split(' ')

しかし、これはちょっとばかげているようです。他に、ブルートフォースの少ない方法はありますか?

のような:

request.tell_me_all_items_passed_to_the_template

ものの種類?

4

2 に答える 2

1

他の誰かが同じ質問をしている場合

したがって、これを行う代わりに:

レンプレート

<form method="post" action="/list/saving/">
    <!--- form fields --->
    <button type="submit" name="save" value='{{ item.pk }}'>Save</button>
</form>

url.py

(r'^list/saving/$', save)

views.py

def save(request):
    ....
    item = Item.objects.get(pk=request.POST['save'])
    ....

これを行う:

レンプレート

<form method="post" action="{% url todolist.views.save item.pk %}">
    <!--- form fields --->
    <button type="submit" name="save">Save</button>
</form>

url.py

(r'^list/saving/(\d+)/$', save)

views.py

def save(request, pk):
    ....
    item = Item.objects.get(pk=pk)
    ....

URL反転の詳細

于 2012-05-26T07:26:13.707 に答える
0

本当に必要な場合は、非表示の入力を使用してください。しかし、これはとにかく不要です。ユーザーはアイテムの「すべて」を変更できる場合がありますが、変更することはできませんpk(または、少なくとも変更できないようにする必要があります...オプションを指定しないでください)。これpkはDjangoがオブジェクトを識別するために使用するものであるため、これはすでに処理されています。ここでの問題が何かわからない。

于 2012-05-25T14:16:00.553 に答える