Django勉強メモ#2
はじめに
Djangoの勉強をしてます。
参考にしている本は
『Python Django3 超入門』掌田津耶乃 (秀和システム / 2020年)
です。
前回は、pythonインストール/Django初期設定をしました。
前回の記事
いつのまにか1週間たっていて、まだ更新のペースがつかめない…。
ビューとテンプレート
urls.py、views.py、index.htmlなどを使っていくつかの表示パターンを学習しました。
Djangoのフォルダ構造は複雑です。
大きくはdjango_appとhelloのふたつのディレクトリがあり、helloのほうが単体のアプリ、django_appのほうは上位の管理フォルダ的なものと理解しました。
本に書いてあるとおりのコードを書くと、たしかにその通りに表示されました。とりあえず1回はこれらを通してコーディングします。その後、2回目をやってみるときに、いろいろアレンジできるとよいかと思ってます。
Hello,Django!!
Hello, World!のようなものですね。
見た目上はHTMLですが、
pythonファイルのほうにコードを書いています。
urls.py
urlpatterns = [
#/hello/にアクセスしたら、helloフォルダのview.pyのindexを呼ぶ
path('', views.index, name='index'),
]
views.py
def index(request):
return HttpResponse("<html><body><h1>Hello, Django!!</h1></body></html>")
ページとページをリンクさせる
HTMLだと、<a>タグを書いておしまいですが、
その出現のさせ方が違うというか。
Views.pyとURLs.pyに設定しておいて、Index.htmlから{{ }}で呼び出します。
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('next', views.next, name='next'),
]
views.py
def index(request):
params={
'title':'Hello/Index',
'msg':'これはサンプルページです。',
'goto':'next',
}
return render(request,'hello/index.html',params)
index.html
<h1>{{title}}</h1>
<p>{{message|safe}}</p>
ほかにも設定することがあるのですが、仕組みの例としてコードを書いてあります。
CSSフレームワークをあてる
参考書籍ではBootstrapを使っていましたが、僕が個人的に好きで使っているMaterialize CSSをあててみたのがこれです。
無事に表示されると安心します。
フォーム送信
テキストボックスに名前を入力して送信すると、こんにちは●●さん、と返すしくみです。
ここではforms.pyも作りました。
Index.HTMLからは{{ }}でフォームを呼び出すという形です。
これもmaterializeで装飾できました。
forms.py
class HelloForm(forms.Form):
name=forms.CharField(label='name',widget=forms.TextInput(attrs={'class':'validate'}))
mail=forms.CharField(label='mail',widget=forms.TextInput(attrs={'class':'validate'}))
age=forms.IntegerField(label='age',widget=forms.TextInput(attrs={'class':'validate'}))
message=forms.CharField(label='message')
Materialize.cssのclassも当ててみました。ちゃんと動作しています。
感想
Htmlに直接コーディングするのではなく、
views.py、urls.py、forms.pyに処理や設定を書いておき、HTMLからそれを呼び出す、という仕組み、実際に作って見ることで次第に分かってきました。
しかし、もうすこしトレーニングが必要です。
追記:NINTENDO 3DS
音楽をつくるソフトがあったのを思い出して、ひさしぶりに3DSを起動。
データ移管できないかなと、子どもの3DSも起動、
充電、本体更新、時刻設定など、初回メニューを消化中です。
以上です。
駄文にお付き合い頂きありがとうございました。
この記事が気に入ったらサポートをしてみませんか?