3HttpResponseつかわないでhtml文書を指定してハローする

from django.urls import path
from . import views

urlpatterns = [
path(‘trymoreapp/’, views.usetemphtmlfunction),
]

 

templatesフォルダ内のHTML文書をつかう

 

この記事では

④アプリフォルダ内のviews.pyでtemplatesフォルダの中にある文書(HTML)を指定する。

プロジェクトフォルダ>アプリケーションフォルダ>view.py ←この人がユーザーにリスポンスするHTML文書を指定する。

ところまでやります。

 

こんな記事も参考にhttps://qiita.com/egplnt/items/4d6fe35dc01067f765cd

新しいプロジェクトをつくりましょう(復習)

怖いことが、起こらないように・・・(コピペをすると、ターミナルを使って生成されるフォルダが自動的にしてくれる設定してくれる部分が狂ってしまいます)

 

プロジェクトファイルを作りたい場所を指定。

cd /Users/otonone/Desktop/python_lesson/Django/

プロジェクトファイルを作る。

django-admin startproject trymoreproject

 

次は場所を指定して

cd /Users/otonone/Desktop/python_lesson/Django/trymoreproject

アプリケーションフォルダをつくる

python3 manage.py startapp trymoreapp

 

うまくいったか試すときは、さっきと違うディレクトリーを指定しなくてはいけません。

どのプロジェクトファイルのmanage.pyを実行するか。

$ cd /Users/otonone/Desktop/python_lesson/Django/trymoreproject
$ python3 manage.py runserver

 

書き換える途中で実行を試みるとコンソールでエラーが出てくることがあります。

NameError: name ‘views’ is not defined

なら、view.pyに関する何かが間違っている、この場合は定義がされてないというヒントをくれます。

定義されていない?

よくよくみると、importを書き込んでいませんでした。

 

 

アプリフォルダのviews.pyとurls.py、プロジェクトフォルダのurls.pyを書き換える(前回と違いますよ)

アプリフォルダ内

views.pyを書き換えます。ユーザーに返すHTML文書を指定します。

from django.shortcuts import render

def usetemphtmlfunction(request):
return render(request,'trymoreapp/usethishtml.html')# templates以下のパスを書く

✴︎renderという関数がでてきますね。動画編集でも最後にレンダーすることがあります。音楽制作ではバウンスやらミックスダウンといったりします。コードで書かれたデータ(HTML文書やら何やら)をブラウザに表示させる関数だと漠然と捉えて問題なさそう・・・です。

 

アプリフォルダ内のurls.pyも書き換えます。

HTML文書をリクエストに合わせて書き換えるための関数を指定します。

from django.urls import path
from . import views

urlpatterns = [
path('trymoreapp/', views.usetemphtmlfunction),
]

views.pyに組み込んだ関数名がusetemphtmlfunctionです。

 

プロジェクトフォルダのurls.pyも書き換えます。

最後に書き換えましたが、アプリフォルダ内のurls.pyよりも先に読み込まれますね。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('trymoreapp.urls'))
]

 

アプリフォルダ内のviews.pyでHTML文書を指定する(初挑戦)

 

HttpResponseを使った時には使うことがなかったtemplates内のHTML文書。

今回は使います。

templatesフォルダ内のアプリフォルダ内のusethishtml.html

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>この文書を使ってください</title>
</head>
<body>
<h1>とうとうHTML文書を表示しました</h1>
{{ insert_something }}
<p>本日は<b>{{ weather }}</b>です。</p>

</body>
</html>

 

アプリフォルダ内のviews.py

from django.shortcuts import render

def usetemphtmlfunction(request):
return render(request,'trymoreapp/usethishtml.html')# templates以下のパスを書く

 

 

 

 

 

 

usethishtml.htmlをダブルクリックして実行すると・・・

一応、成功でいいですかね!指定したHTML文書をDjangoを使って開きました。

 

こちらからもアクセスしてみましょう。

http://127.0.0.1:8000/trymoreapp/

 

一応、成功でいいですかね!指定したHTML文書をDjangoを使って開きました。

 

{{}}って何?ーpythonからhtmlに文字を渡す。

どうやらあと一歩のようです。

 

views.pyを次のように書き換えてください。

一部だけ書き入れればOKdesu.

from django.shortcuts import render

def usetemphtmlfunction(request):
my_dict = {
'insert_something':"views.pyのinsert_something部分です。",
}
return render(request,'trymoreapp/usethishtml.html',my_dict) # templates以下のパスを書く

 

これで、{{}}の中が出てきました。

なぜ辞書型にしないといけないのかわかりません。

ただこのサイトを参考にしました。

【Python Django】初心者プログラマーのWebアプリ#2 HTMLテンプレート表示 - Qiita
Python DjangoフレームワークでHTML表示前回の簡単な文字表示アプリ記事の続きです。Hello World!と表示させた超基礎内容でした。今回は、pythonで処理した内容をキレイ…

 

SNSをつくりたい人は、この本をおすすめします。

 

 

コメント