最近、Pythonで書かれたAPIを叩く案件に関わっていて、Pythonに興味が湧いてきました。
とっかかりとしてDjangoのチュートリアルをやってみています。
まだ始めたばかりですが、Railsと結構違う部分があり、面白いです。
今回は勉強したてのDjangoでTimeCrowdログインを実装してみたいと思います。
Pythonの導入
Pythonをインストールして開発環境を整えます。
rbenvに慣れているのでpyenvを使います。
README通り進めればOKです。(僕はrbenvもpyenvもgit方式を使っています)
次にpyenvでPythonをインストールします。
$ pyenv install 3.7.0
$ pyenv global 3.7.0
$ python -V
Python 3.7.0
$ pip -V
pip 10.0.1
pythonとpipが使えるようになっていればOKです。
Djangoの導入
venv環境を作成し、今回使うパッケージを入れていきます。
(flake8はRubyでいえばRubocop的なやつです)
$ python -m venv venv
$ source venv/bin/activate
(venv) $ pip install django python-dotenv social-auth-app-django flake8
(venv) $ pip freeze > requirements.txt
Djangoプロジェクト・アプリの作成
「mysite」というプロジェクトを作り、「login」というアプリを用意します。
(venv) $ django-admin startproject mysite
(venv) $ cd mysite
(venv) $ python manage.py startapp login
TimeCrowdログインの実装
以下の2つの記事を参考に、実装します。
アクセスキーやシークレットは.envに記載しておきます。
(リダイレクトURLは「http://localhost:8000/complete/timecrowd/」として登録します。)
最終的な実装内容は以下のコミットのようになりました。
この状態でmigrateとrunserverすれば、ログインできるようになっているはずです。
(venv) $ python manage.py migrate
(venv) $ python manage.py runserver
デプロイ
デプロイには、Rubyで扱いになれているPassengerとCapistranoを使うことにしました。
以下の記事が参考になりました。
Rubyのプロジェクトのようにはスムーズにいかずに、いくつか躓く部分はありましたが、以下のコミットで無事デプロイできました。
今回作ったものは、実際に以下のURLで試すことができます。(といっても名前を表示するだけですが)
普段使っていないフレームワークを学ぶのは刺激になるので、これからも少しずつ触っていこうと思います。