0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

転職活動時にLaravel 9 で作ったポートフォリオを生け贄にしたDjango&Poetryの学習備忘録①

Last updated at Posted at 2024-12-08

転職活動終了からずっと放置していたLaravel(PHPフレームワーク)で作ったポートフォリオをDjango(Pythonフレームワーク)に移行したときの学習備忘録です。

なお、Windows10の使用ノートPC、VScodeで基本的に作業してます。

①開発環境を整える

とりあえず、以下の方法で私用PCのLinuxにPoetryやPythonのインタープリターをインストールしました。

また、その後以下のコマンドで、Linux(厳密には筆者はUbuntu)上にDjangoをインストールしました。

wsl
$ sudo apt install python3-django

②雛形を作る

VScodeでDjango版ポートフォリオを作成するフォルダ(今回はDjangoes)を開き、以下のコマンドを入力

wsl
django-admin startproject django_portfolio

入力した時点で以下のフォルダ構成で雛形ができました。

Djangoes(フォルダ)
   |
   |__django_portfolio(フォルダ)
       |
       |--django_portfolio(フォルダ)
       |    |--__init__.py(初期化処理を行うスクリプトファイル)
       |    |--asgi.py(ASGIという非同期Webアプリケーションのためのプログラム)
       |    |--settings.py(プロジェクトの設定情報を記述するファイル)
       |    |--urls.py(プロジェクトで使うURLを管理するファイル)
       |    |--wsgi.py(WSGIというWebアプリケーションのプログラム)
       |
       |--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)               

③上記の雛形にPoetryを導入する、pyproject.tomlの作成

#wsl起動したまま
cd \Djangoes\django_portfolio

かVScodeでDjangoes直下のdjango_portfolioフォルダに作業フォルダを移動後、以下のコマンドを使いました。

#wsl起動したまま
$ poetry init  

このコマンドを使うと、Pythonプロジェクトの設定や依存関係を管理するためのpyprojec.tomlというファイル(requirements.txtとvenvを合体させたようなもの)の設定に関するメッセージが以下のように出たので、以下のように設定しました。(※入力してEnterすると随時メッセージが出てきます。)

※どのように設定するのが最適解かは理解が進み次第追記します。

This command will guide you through creating your pyproject.toml config.
#このコマンドは、pyproject.toml 構成の作成をガイドします。

Package name []:👈Poetryを導入するプロジェクト名を記述(※「~」と同じにしました)

Version []:👈プロジェクトに適用するPoetryのバージョン(※「~」と同じにしました)

Description []Poetryを適用するプロジェクトがどのようなプロジェクトか記述??(※省略可能)

Author [None, n to skip]:👈プロジェクト作成者名??(※ n で省略しました)

License []:??(※省略可能)

Compatible Python versions [^3.]:インタープリターとして用いるPythonのバージョンを指定(※3.x.yyは省略可能)
#互換性のあるPythonのバージョン

Would you like to define your main dependencies interactively? (yes/no) [yes] 👈yesEnterすると追加したい物の名前を聞かれます
#主な依存関係を対話的に(インタラクティブシェルで)定義しますか?
Search for package to add (or leave blank to continue):👈追加する外部ライブラリー・パッケージ名(※省略可能)
#追加するパッケージを検索します(または空白のままにして続行します)

Would you like to define your development dependencies interactively? (yes/no) [yes]👈yesEnterすると追加したい物の名前を聞かれます
#開発依存関係を対話的に(インタラクティブシェルで)定義しますか?
Search for package to add (or leave blank to continue): 👈追加する外部ライブラリー・パッケージ名(※省略可能)

Generated file
#以下、こういう感じのpyprojec.tomlを作りますというメッセージが出ます。

Do you confirm generation? (yes/no) [yes] #おそらく「これで大丈夫ですか」的な意味
👆yesとするとGenerated file以下に提示されたpyprojec.tomlが以下の場所にできます。
Djangoes(フォルダ)
   |
   |__django_portfolio(フォルダ)
       |
       |--django_portfolio(フォルダ)
       |--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)
       |--pyprojec.toml👈開けるとGenerated file以下に提示された内容が載っています

なお、上記のQiitaにも書いたようにLinuxにPythonの各インタープリターをあらかじめ入れておくと、pyenvで切り替えなくとも(ある程度)使用するPythonのインタープリターが切り替えられます。なお、各プロジェクトで使用しているインタープリターは次のコマンドでも確認できます

wsl
poetry env info

④Poetryを導入した上記の雛形に外部ライブラリー・パッケージを入れ直す・追加する

なぜかはまだ全然分かっていないですが上記の順番を辿った段階では、pyprojec.tomlにdjangoに関する情報は載っていません。

そのため、再度djangoパッケージをPoetryで入れ直します。

wsl
$ poetry add django
#poetry add 外部ライブラリー名・外部パッケージ名

※入力すると、pyprojec.toml の以下の部分が追記されるとともに、poetry.lockというファイルが以下の場所にできます。

pyprojec.toml
[tool.poetry.dependencies]
python = "^3.〇"  👈③のpyproject.tomlの作成時に指定したバージョンが書かれています。
Django = "^〇.△.▢" 👈〇.△.▢はバージョンの数字
Djangoes(フォルダ)
   |
   |__django_portfolio(フォルダ)
       |
       |--django_portfolio(フォルダ)
       |--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)
       |--pyprojec.toml
       |--poetry.lock       

なお、

wsl
$ poetry new 新規プロジェクト名

で作り始めると、pyproject.toml、poetry.lock、testフォルダ・pytestも一緒に生成されますが、上記のこれまでの方法だとpytest及びtestフォルダは生成されないので、

$ poetry add pytest

で同様にインストールして、testフォルダをpyprojec.tomlやpoetry.lock等と同じ階層に作りました。

⑤開発用サーバーを動かしてみる

今回あくまで使用しているインタープリターは個人Linux上にあるので、相変わらずwslを入力した状態でさらに以下のコマンドを入力します(※作業フォルダは動かすプロジェクトにしておく。今回で言うとDjnagoesフォルダ直下のdjango_portfolioフォルダ)

wsl
$ python3 manage.py runserver

入力して出てくるメッセージ内の中に

Starting development server at http://127.0.0.1:8000/

とあれば、とりあえず開発用サーバーは動いていて「http://127.0.0.1:8000/」
にアクセスすると以下のデフォルト画面が出てきました。また開発用サーバーを起動した段階でdb.sqlite3ファイルがpyproject.toml、poetry.lockと同じ階層に自動的にできました。

そのときのターミナルの様子

runserver.png

プロジェクトのデフォルトの初期画面

default.png

主な参考資料

①Python Django 4 超入門 掌田津耶乃(著) 秀和システム

Amazonリンク

https://www.amazon.co.jp/Python-Django-4-%E8%B6%85%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798062413/ref=sr_1_1_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=R0XCD758BHNL&dib=eyJ2IjoiMSJ9.ebU1BVoISj7I46DdCZpOHw8C8FdxzZmO4AT8rnK7_slFBWQUxdp455QPlyoMl3BJnhZht5EUt8SYY3sk5HPCME-dCo3mJnk9zoMEPgtaTAAOeHOkxSrWfh6uysqURRHXWTBHdyAflRGNwCF7jucTCtcTb20mxHerWqIpUemEFzq5McQok74xClIP8VVHsoPFeBffYf9JB_H9ZhKXfz5ayadldLCSkWH9zdYHJit9yMc.AityoC-b4JhsJYR0-AJl5NfJmrbFwMFxuaor1cZrb0s&dib_tag=se&keywords=Django+%E5%85%A5%E9%96%80&qid=1731134712&s=books&sprefix=django+%E5%85%A5%E9%96%80%2Cstripbooks%2C195&sr=1-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1

②[初心者向け] Poetry入門!インストール方法から使い方、コマンド、パッケージの管理方法まで徹底解説 @shun198 さん Qiita
https://qiita.com/shun198/items/97483a227f288ad58112#pyprojecttoml%E3%81%A8poetrylock

③Poetry公式ドキュメント
https://python-poetry.org/docs/basic-usage/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?