見出し画像

Django勉強メモ#2

はじめに

Djangoの勉強をしてます。
参考にしている本は
『Python Django3 超入門』掌田津耶乃 (秀和システム / 2020年)
です。
前回は、pythonインストール/Django初期設定をしました。
前回の記事
いつのまにか1週間たっていて、まだ更新のペースがつかめない…。

ビューとテンプレート

urls.py、views.py、index.htmlなどを使っていくつかの表示パターンを学習しました。

Djangoのフォルダ構造は複雑です。
大きくはdjango_appとhelloのふたつのディレクトリがあり、helloのほうが単体のアプリ、django_appのほうは上位の管理フォルダ的なものと理解しました。

画像1

本に書いてあるとおりのコードを書くと、たしかにその通りに表示されました。とりあえず1回はこれらを通してコーディングします。その後、2回目をやってみるときに、いろいろアレンジできるとよいかと思ってます。

Hello,Django!!

Hello, World!のようなものですね。

画像2

見た目上は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から{{ }}で呼び出します。

画像4

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をあててみたのがこれです。
無事に表示されると安心します。

画像5

フォーム送信

テキストボックスに名前を入力して送信すると、こんにちは●●さん、と返すしくみです。
ここではforms.pyも作りました。
Index.HTMLからは{{ }}でフォームを呼び出すという形です。
これもmaterializeで装飾できました。

画像6

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

画像6

音楽をつくるソフトがあったのを思い出して、ひさしぶりに3DSを起動。
データ移管できないかなと、子どもの3DSも起動、
充電、本体更新、時刻設定など、初回メニューを消化中です。

以上です。
駄文にお付き合い頂きありがとうございました。


この記事が気に入ったらサポートをしてみませんか?