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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

1924閲覧

【Django】views.pyの変数をhtmlへ受け渡すことができない

hide_py

総合スコア1

Django

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/07/20 08:45

編集2021/07/22 12:14

Django+Pythonでtestアプリを作っています。
views.pyでランダムな変数を生成し、その値をtest.htmlファイルに受け渡したいです。
htmlファイルは全てtemplateディレクトリにあります。
testアプリを作っているとすると、それぞれのファイルのディレクトリ構造は以下のとおりです。
test/views.py
test/templates/test/test.html

環境は
MacOS Big Sur (ver11.2.3)
python 3.6.8
Django 3.2.5

コードは以下のとおりです。

該当のソースコード

views.py

Python

1from django.shortcuts import render 2import random 3 4def index(request): 5 randnom_number = random.randint(1, 10) 6 params = { 7 'num': randnom_number, 8 } 9 return render(request,'test/test.html', context={'params': params,})

test.html

html

1{% extends 'test/base.html' %} 2 3{% block content %} 4 変数:{{ params.num }} 5{% endblock %}

実行してもエラーは表示されないのですが、ブラウザでは
変数:
しか表示されておらず、params.numの値が表示されていない状態です。
解決策をご教示いただけないでしょうか。

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

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

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

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

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

guest

回答4

0

python

1def index(request): 2 randnom_number = random.randint(1, 10) 3 context[params] = randnom_number 4 return render(request,'test/test.html')

とすればいいと思います。

参考にしてください

投稿2021/07/21 15:02

k888

総合スコア123

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

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

hide_py

2021/07/21 16:15

ご回答ありがとうございます。 提示していただいたコードと、 htmlファイルの {{ params.num }}を{{ params }}に変更したもので試しましたが、 同じように「変数:」までしか表示されず、変数の数値は表示されませんでした。。。 ちなみに、サーバ上ではなく自分のPCのローカル環境で実行しています。 エラーもなく動作しているので、原因がさっぱりです。。。
guest

0

自己解決

以下のURLを参考に、テンプレートビュー内にdefを記述し
defの記述内容を修正しました。
https://qiita.com/ytyng/items/7cb3c3a5605974151678

python

1def get_context_data(self, **kwargs): 2 randnom_number = random.randint(1, 4) 3 context = super().get_context_data(**kwargs) 4 context["params"] = randnom_number 5 return context

投稿2021/07/26 04:46

hide_py

総合スコア1

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

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

0

def index(request): randnom_number = random.randint(1, 10) context['params'] = randnom_number return render(request,'test/test.html', context)

ではどうでしょうか

投稿2021/07/22 10:28

k888

総合スコア123

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

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

hide_py

2021/07/22 11:31

ご回答ありがとうございます。 return renderの最後にcontextを追加してみましたが、 同様に「変数:」までしか表示されず値は表示されなかったです。。。
k888

2021/07/22 12:24

変数:{{ params }} としていますか。
hide_py

2021/07/22 13:07

はい、htmlファイルでは 変数:{{ params }} と記述しています。
guest

0

失礼しました。コードがまちがっていました。

python

1def index(request): 2 randnom_number = random.randint(1, 10) 3 context['params'] = randnom_number 4 return render(request,'test/test.html')

ではどうですか。

投稿2021/07/21 16:58

k888

総合スコア123

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

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

hide_py

2021/07/22 09:14

再度のご回答ありがとうございます。 いただいたコードでも、「変数:」までしか表示されませんでした。。。 その他にも下記の解決方法を試しましたが、ダメでした。。。 https://teratail.com/questions/344966
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問