Djangoを使って初めてWEBアプリを作成しました。
ログインなしで使えるのでよかったら試してみてね。
https://yokatter.quality-of-life1.com/
プログラミング初心者の方もアプリ作成の参考にどうぞ。
この記事では苦労した点などについて書いていこうと思います。
なぜ作ったか
よくサイトにある「買ってよかったもの」まとめサイトなどが大好きだから。
他の人がどんなものを買っているのか気になる。いいものがあったら自分も欲しい。よかったものを自分もシェアしたい。在宅ワークでおうち時間を良くしたい。などの思いがあり作成しました。
前回laravelで掲示板を作ったが、djangoも同じようなものだろと思い、勉強もかねてdjangoで作りました。
初のdjango laravelと比べて
laravelと比べて、導入や環境開発は簡単なでした。
laravelではdockerの導入や、ubuntuなどいろいろ導入をしたが、pythonさえ入っていれば?コマンドちょちょってすればできました。
今回アプリ作成に関して一番大変だったのは、デプロイかなー。
xserverへのデプロイでしたがエラー連発の末、どうにかデプロイできました、herokuや、awsを使うのが定石らしいのですが、あまりお金をかけたくないことから普段使っているxserverへデプロイしました。デプロイ時詰まったところはこの後、共有します。
アプリ作成に関しては、今回はlaravelで作成したWEBアプリ時とは違い、ログインなしで作成しました。そのためか、作成自体割とすんなりできました。
詰まったところは、外部キーの取得方法位?英語サイトも頑張って巡り情報を探してそれも解決。
ただlaravelと比べて、djangoのほうが日本語では情報が少ないような気がしました。
laravelで作成したおかげもあってか、前回苦労したDB設計もすんなりいけました。
Xserver Django初デプロイ、エラー連発
正直、Djangoデプロイ?日本語記事出てきたしいけるっしょーくらいに思ってました。
それが半日くらい詰まってしまった。
xserverにデプロイのためか、英語記事は出てきませんでした。。
参考にさせていただいた記事たち。
https://kazusa-pg.com/xserver-django/
https://workspacememory.hatenablog.com/entry/2021/05/07/015923
https://datacoach.me/data/dx-edu/xserver-homebrew/#curl
https://qiita.com/joshnn/items/244ca701c1bf9be8f350
https://datacoach.me/data/dx-edu/xserver-python-miniconda-env/
https://next-k.site/blog/archives/2022/02/15/727
しょっぱなからエラー!
こんなにも記事があるのに!!エラーが解消できません。。
xserverにlinuxbrewをインストールする必要があるのですが、git、curlのバージョンが古いため、できませんと出る。
どうにか頑張って、git、curlのバージョンアップをしたが、gitエラーでremote-httpsが使えません?的なエラーが解消できず、結局minicondaを使って簡単デプロイ、ローカル開発でminicondaを使ってなかったためできれば、pipenvを使いたかったが、挫折。。下記リンクの方と同じところまで?いきました。
ただ、勉強になりました。
xserverにソフト?(gitやopensslなど)を落とすのに
- ダウンロード
- 解凍
- configの設定?
- make
- make install
この手順でビルドが必要になるのがわかりました。
また、ビルドしたものは、パスを通して「このソフトを使うよ宣言」の必要があります。
普段、黒い画面をいじることは少ないのですが、いろいろ勉強になりました。
やっとデプロイ!!しかししかしの500エラー原因は改行コード
いろんな記事を見ると、500エラー、よくあることみたいです。
私の原因はcgiの改行コードでした。cgiはCRLFではなくLFにしなければいけないみたいで、ここで数時間かかった。。。
おそらくxserverに直接cgiを作成し、それをvscodeで作成したのが悪かった?
普段改行コードなど気にしないので全然気づかなかったが、たまにすごい悪さをする。
下記記事が参考になりました。
※vscodeに拡張機能code-eol を入れると改行コードが可視化できるよ
終わりに
一度CRUDを自力で作ってみると、ほかの言語での作成もほぼ似たようなものなので、laravelの時ほど難しく感じなかった。(成長?)
djangoはパイソンベースなので今後はpythonで機械学習や、データ分析などもやっていきたいなと思いました。