さとし日記

都内大学院生のブログ

そういえば大学に入るまでパスポートもパソコンもスマホも持っていなかったな

マイナビによると大学生の海外旅行経験者の割合は37.9%らしいから、1回以上行っていると海外経験豊富ということになるのかな。

他のICU生に比べるとかなり少ない方だとは思うけど、4年間でアメリカ2回、台湾1回、SEAプロでカナダ1回というのは入学前には想像もつかなかった。


パソコンは今では大学生全体の中ではかなりヘビーユーザーな方だと思うけど、入学するまではリスニング用のCDをiPodに入れる時だけ親のものを借りて使っていた。

入学してすぐの頃は人差し指で頑張ってタイピングしていたし、 PDFファイルとはなんのことかよくわからなかったのに、今ではプログラミングもするようになったのは自分でもびっくりだ。


携帯もずっとガラケーを使っていて、親に帰宅時間をメールするくらいしか使っていなかった気がする。
そういえばTwitterやInstagramを始めたのも大学に入ってからか。
スマホのおかげであらゆる場所から様々な情報にアクセスできるようになって生活が一気に便利になったし、勉強も捗るようになった。


4年間で随分状況は変わるものだな。

少しは世界が広がった気がするし友達にも恵まれて楽しい大学生活だった。

大学院生活も実り多いものになるといいなぁ。

 



それとは全然関係ないけど、以下は今作っているwebアプリの今日の分の作業メモです。。

まずは、
$ python manage.py migrate
でデータベーステーブルの統合をした。

 

そして、
$ python manage.py startapp contents
でアプリケーションを作成し、contents内のapps.pyをプロジェクトから呼べるように、プロジェクトフォルダ内のsettings.pyのINSTALLED_APPSにcontents.apps.ContentsConfigを追加した。

 

次はルーティングの設定。
データベースへのアクセスや、外部のHTMLファイルへのアクセスなどは後でやることにして、まずは、
「クライアント → ルーティング → ビュー → クライアント」
の大枠を作る。

そのためには、
①プロジェクトフォルダ内のurls.pyから、アプリケーション内のurls.pyを呼ぶ設定
②アプリケーション内のurls.pyからアプリケーション内のviews.pyを呼ぶ設定
の2つを作る必要がある。

②に関しては単純で、同じ階層に存在するviews.pyをurls.pyへインポートし、urlpatternsでviews.py内の関数を実行するという関連づけをするだけ。

①はまずプロジェクトフォルダ内のurls.pyにおいて、django.conf.urlsからurlに加えて、includeもインポートする。そしてデフォルトとして、urlpatternsにadminが呼ばれた時の設定のみ書かれているが、そこにincludeを用いてアプリケーションが呼ばれた時にurls.pyにアクセスする設定も加える。

で、それを出力した結果は次の通り。

 

f:id:satoshi86:20200311100844p:plain

 


無事にviews.py内のHttpResponseの内容を表示することができた。

 

次に外部のHTMLファイルを追加していく。

その際、テンプレートフォルダ内にさらにアプリケーションと同じ名前のフォルダを作り、その中にHTMLファイルを作るというDjango独自のルールがあるらしい。
なんでこんなややこしい構造にするのかは現時点ではよくわからない。。
あとでその恩恵に与れるのかな?
とりあえずその手順を踏襲することにする。

 

PyCharm上で新たにHTMLファイルを作ると、デフォルトでは
<html lang=“en">
になっているので、今回は
<html lang=“ja-jp">
に変更した。

ここで言語を指定しておかないと文字化けの原因になるらしい。

適当に内容を作ったら、Djangoについているrenderという関数を使ってview.pyからHTMLファイルを呼び出す。

 

f:id:satoshi86:20200311101002p:plain



一旦保存してからブラウザを更新すると、ページのタイトルと見出しが表示されたからうまくいったみたいだ。

 
次にmodel.pyを編集した。
ここはあんまりよく理解できていないところもあるけど、とりあえず動かしながら全体を把握していくことにした。

ブログっぽいサイトを作ることにしたので、タイトルの文字数や投稿日時の指定、画像のアップロードに関する設定などをした。
保存してからターミナルで
$ python manage.py makemigrations
を実行することで、新しい定義ファイルをデータベースに投入するためのファイルを自動生成することができたはず。

f:id:satoshi86:20200311101051p:plain

これでmigration用のファイルができたので、そのファイルを
$ python manage.py migrate
でmigrationする。

f:id:satoshi86:20200311101109p:plain

多分うまくいっている。

f:id:satoshi86:20200311101128p:plain

$ sqlite3 db.sqlite3
> .tables
からもデータベースのテーブルが作られたことが確認できる(contents_content)。

 

contentテーブルにデータを入れていくのはまた次回ということで。