質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

600閲覧

【Django】テンプレートの情報について

setuna0531

総合スコア128

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2020/08/26 08:07

質問内容

テンプレートについて質問です。
まずは、私が思うサンプルを下記に記載します。

models

1class Item(models.Model): 2 itemname = models.CharField(max_length=100) #アイテムの名称 3  itemprice = models.IntegerField() #アイテムの値段 4 5 6※Itemモデルには「ペットボトル、アルミ缶、スチール缶」が入っているものとします。

views

1from .models import Item 2from django.views import generic 3 4class Item_List(generic.TemplateView): 5 template_name = 'test/Item_list.html' 6 def get_context_data(self, **kwargs): 7 context = super().get_context_data(**kwargs) 8 item = Item.objects.all() 9 context['item'] = item 10 return context

html

1{% extends 'test/base.html' %} 2 3{% block content %} 4 <div> 5 {% for item in item %} 6 <div><a href="{% url 'test:test_order' %}">{{item.itemname }}</a></div> 7 {% endfor %} 8 </div> 9{% endblock %}

テンプレートに表示されている{{item.itemname}}の表示を押して画面移動した後、
その画面で選択したモデルデータを使いたいです。
Item.pkなどで押されたアイテムの情報がわかれば次の画面のobjects.get(item.pk)などで取得できますが、
どうすればそのデータが次の画面で使用できるかわからないため質問させていただきました。
ご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

URLに変数としてitem.idを追記し、
Views.pyにて

class Item_Order(generic.TemplateView): item = Item.objects.get(id=self.kwargs['id']) context['item'] = item

とすることでcontextで次の画面で使用することができました。

投稿2020/08/27 08:16

setuna0531

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問