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

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

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

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

HTML

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

Q&A

解決済

1回答

9736閲覧

pythonの変数をhtmlで使用しブラウザで表示させたい。

taromi

総合スコア1

Python

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

HTML

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

0グッド

0クリップ

投稿2021/07/10 13:48

前提・実現したいこと

pythonとhtmlについて質問させてください。
pythonで使用している変数をtest.htmlで使用したく、以下のようなコードを書きました。python.pyを実行した際は実行結果①のように表示されるのですが、ブラウザでtest.htmlを表示させた場合実行結果②のように表示されます。
単純にpythonとtest.htmが連携していないのが原因なのではないかと考えていますが、もしこの予想が正しいなら連携をさせる方法がわかりません。
わかる方教えていただけませんでしょうか?初めての質問でわかりにくくなってしまいすみません。よろしくお願いいたします。

※ファイルは全て同じディレクトリ階層にあります。

python.py

import cgitb,io,sys
starta = "あいうえお"

cgitb.enable()
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

print ("Content-Type: text/html; charset=UTF-8;\n\n")

page_data = {}
page_data['header'] = '<h1>' + starta +'</h1>'

with open('test.html','r') as file:
html=file.read()
file.closed

for key, value in page_data.items():
html = html.replace('{% ' + key + ' %}', value)

print(html)

test.html

<!doctype html> <html> <head> </head> <body> <title id="header"> {% header %} </title> </body> </html>

実行結果①(python上で実行した結果)

<!doctype html> <html> <head> <title id="header"> <h1>あいうえお</h1> </title> </head> <body> </body> </html>

実行結果②(ブラウザでtest.htmlを開いた結果)

{% header %}

実現したい結果(ブラウザでtest.htmlを開いた結果)

あいうえお

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

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

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

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

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

takasima20

2021/07/10 14:03

webシステムの勉強はされてますか?
taromi

2021/07/10 14:06

マルチポストは削除しました。
taromi

2021/07/10 14:09

takasima20さん、ありがとうございます。 webシステムの勉強とは具体的にどのようなことでしょうか?
k4a

2021/07/10 14:29

「webシステムの勉強」というのは少し曖昧な表現ですが、たしかにwebシステムの根本的な仕組みが理解できていないような気がします。 記載のコードだとpythonでhtmlファイルを読み込んで、python内だけで置換・表示を行っています。 これはhtmlファイルに何の影響も及ぼしていません。 置換したものをhtmlに再度書き込めばhtmlにも反映されますが、おそらくそういうことでは無いのだと思います。 pythonはサーバサイドで動くので、フロントのhtmlと直接連携させることは出来ません(私もpythonは専門じゃないので間違っているかもしれません)。フロントのリクエストに従って置換したhtmlファイルを返すという形になるのでは無いでしょうか?
takasima20

2021/07/10 20:36

わりと範囲が広いのでそのような表現にしましたが、たしかにわかりにくかったですかね。 とりあえず submit について調べてみるといいと思います。
m.ts10806

2021/07/10 22:46

.py をブラウザからアクセスしたいのか .html をブラウザからアクセスしたいのか はたまた別か でやり方全然違ってきますし、 調べて出ない内容ではないです。 コード書き始める前に調べることがあったのでは。 もし「これでできる」という根拠を見つけられたうえなのであれば 出典明示してください。
guest

回答1

0

ベストアンサー

やりたいことは分かるのですが、Webプログラミングの全体像が分かっていないと実現できません。
Python言語によるWebプログラミングはnode.jsサーバーを通して、djangoフレームワークを組んで操るのが王道です。
言い換えれば、Chrome等のブラウザで、"http://localhost/test"と指定すると、変数も反映した表示がなされるように設定しなければなりません。

djangoを活用したときに、ご質問の部分を端的に説明したのが、views.pyの変数値をDjangoのテンプレートに渡す方法の記事です。
やはり、このしくみを理解するには、幅広い勉強が必要になるでしょう。

投稿2021/07/10 14:58

seastar3

総合スコア2285

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

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

attakei

2021/07/10 15:18

> Python言語によるWebプログラミングはnode.jsサーバーを通して、djangoフレームワークを組んで操るのが王道です。 ここなのですが、「Webサーバー」もしくは「WSGIサーバー」ではありませんか?
taromi

2021/07/14 12:12

seastar3さん、回答ありがとうございます。djangoを活用した方法の仕組みについてもう少し深く勉強させていただきます。質問する前にもう少し自分なりに調べて質問するべきでした。すみません。アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問