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を使って開きました。
こちらからもアクセスしてみましょう。
一応、成功でいいですかね!指定した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以下のパスを書く
これで、{{}}の中が出てきました。
なぜ辞書型にしないといけないのかわかりません。
ただこのサイトを参考にしました。

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