2017-03-29 10 views
1

データを渡します。私はこれを試しました:は、私は素晴らしい作品次のことを持っているバックDjangoのビューに私のテンプレートの表の内部

<form align="center" action="{% url 'app:doit' %}" method="post" ><b></b> 
{% csrf_token %} 
    <input type="hidden" name="items" value="{{ items}}" /> 
    <input type="submit" name="export" value="Export" > 
</form> 

しかし、それは私が期待したように動作しません。データは次のような文字列として表示されます。 "、..." をビューに戻して、アイテムをPythonオブジェクトとして処理できるようにするにはどうすればよいですか?

私の見解では、輸出の方法がこれを含んでいます

if 'items' in request.POST: 
    my_items = request.POST['items'] 
+0

それだけでエクスポートし、変更しないなら、あなたが使用することができます。

if 'items' in request.POST: # my_item_values is a str my_item_values = request.POST['items'] try: my_item_values = my_item_values.split(',') except TypeError: # Handle error of conversion from string to list here else: # typecast succedded. Get your items! items = Item.objects.filter(id__in=my_item_values) # This is a QuerySet # or this (if you used the names) items = Item.objects.filter(name__in=my_item_values) # This is a QuerySet 

カスタムテンプレートタグは次のようになります。コンマで区切られたIDのリストユーザーはそのフィールドを変更できるので、フィールドが改ざんされていないことを確認するために[暗号署名](https://docs.djangoproject.com/ja/1.10/topics/signing/)を検討することをお勧めしますと。 – user2896976

+0

私はコレクション全体をそのまま渡したいと思います。 –

+0

私はなぜこれを行う必要があるのだろうかと不思議です。オブジェクトは最初からバックエンドから来たので、なぜあなたはそれらをそこに送ろうと思いますか? –

答えて

0

をすることはできませんPOSTバックビューへQuerSet。 HTMLフォームはDjango QuerySetを理解できません。それはいいですね。これに

<input type="hidden" name="items" value="{% my_items items %}" /> 

:これらの数字は、各itemidある

<input type="hidden" name="items" value="1,2,5,7,8" /> 

あなたは何ができるか

はこれを生成するcustom template tagを作成することです。必要ならばnameフィールドを使用することもできます。idが公開されることはあまり安全ではないためです。

その後、POST編たら、ビュー内の私はどうなる:

@register.simple_tag() 
def my_items(items): 
    return ','.join([item.name for item in items]) 
+0

興味深いことに、以前はカスタムテンプレートタグを実装したことはありません。リンクに感謝します。ありがとう、私はそれを試してみる –

+0

テンプレートタグを使用したこのアプローチは、異なるテンプレートでこれを多く実行する場合にのみ優先されることに注意してください。あなたのビューで直接リストの理解を行い、それをコンテキストに渡す方が速いです。 – user2896976

+0

私は最後のコメントに従いますかわかりません。ビューからテンプレートへのデータはすぐれています。私はちょうど別のビューにそのデータを渡すことができるようにしたい。私はおそらく3つの異なるテンプレートから同じことを行うでしょう。 –

関連する問題