freedom-man.com

ブログは俺のセーブポイント

Category: Python (page 1 of 3)

PythonのWebアプリフレームワークFalcon試してみた

Falconという高速・シンプルなWebアプリフレームワークを触ってみましたー

PHPの高速WebアプリフレームワークでPhalconというのがありますが、PythonはFalconになります。

Continue reading

Pythonのargparseをテストする

Pythonのargparseモジュールを利用するとPythonスクリプトに渡された引数のチェックを良い感じにやってくれます。自動的にヘルプコマンドも作ってくれたりするので、コマンドラインツールを作るときにはかなり便利です。

今回はargparseによるコマンドライン引数のパースをunittests + Mockでテストしてみました。Pythonのバージョンは2系です。

Continue reading

Python初心者がPyPIにコマンドラインツールを登録してみた

ExactTargetのCLIを仕事の便利ツール的な感じで作っていたのをPyPIに公開してみました。↓

et-cli Python Package Index

でインストールできるようになってますので、ExactTarget導入している開発者の方は良ければお使いください(日本ではほとんど居ないと思いますが…)。ツールの説明は別の記事として書こうと思います。まだまだ機能不全+クソコードな感じなのでもうちょい時間作って書いていかないとなー。

ということで、今回はコマンドラインツールをPyPIにパッケージ登録するやり方を書いていきます。

Continue reading

herokuでdjango動かしてみる。

この冬はLPICの受験勉強!

→スマホとかPCから勉強できる自分用の単語帳的なアプリが欲しい!

→Androidアプリ開発者レベル1だからとりあえずWebアプリで早急に作ろう!

→手軽にホスティングできて、手軽に作れるフレームワークで!

→heroku + python + django!

 

ということで、linux環境からherokuでdjango動かすまでの備忘録。っていうかherokuガイドの日本語訳w

詳しいやり方はherokuのstartガイド参照↓

https://devcenter.heroku.com/articles/getting-started-with-django

 

ちなみにdjangoデプロイするときにherokuのwsgirefのpipインストールの時に

python3系だと何故かコケちゃうので、バージョンは2.7でデプロイしてます。

 

1. pipとかのインストール

 

※もしかしたらpython-setuptoolsインストールしなくてもイケるかも。

※sudo pip installとかやるとルートユーザ権限で実行される関係で、venvの環境外にインストールされちゃうっぽい。

 

2. djangoアプリ作成

 

3.Procfile(設定ファイル)作成

で、以下を入力↓

web: gunicorn hellodjango.wsgi

 

4. django起動確認

でブラウザでhttp://localhost:5000を開き、”It Worked!”が出ていることを確認。

 

5. インストールされているパッケージ一覧をrequirements.txtに記述

 

6. あとはお馴染みのherokuのデプロイコマンド

 

7. DB関連の設定

settings.py

 

wsgi.py

 

ローカルとの差異で注意すべきところは

dj_database_url.config() で取ってくるのは環境変数のDATABASE_URLの値になるので、

って感じで「ローカルに環境変数が定義されていなければ環境変数定義する」 的な記述をしておく。

あとはherokuにデプロイしたあとにheroku側でコマンド実行(heroku run)

 

※Pythonのバージョンを設定する場合は

アプリのルート直下にruntime.txtってのを配置して、runtime.txt内にpython-3.3.2って書けば良い。

サポートしているバージョンは以下の3つ

python-2.7.4(runtime.txtが無いときのデフォルトバージョン)

python-3.3.2

pypy-1.9

 

ちなみにdjangoアプリのディレクトリ内でlsするとこんな感じ↓

Procfile  hellodjango  manage.py  requirements.txt runtime.txt

 

結局はDBの設定とProcfile, requirements.txt, runtime.txt入れるだけ動きます。

基本requirements.txt以外は一回設定したら二度と設定しないので

heroku用のテンプレート作っても良いっすね。

 

djangoのbuilt-in viewの利用

djangoのユーザ管理ではビルトインのviewが利用できる。

https://docs.djangoproject.com/en/1.5/topics/auth/default/#module-django.contrib.auth.views

 

上記URLに書いてあるようにloginの場合はurls.pyに

みたいな感じで、viewにビルトインのビューと任意のテンプレートを設定してあげて、

テンプレートにはこれまたデフォルトで設定されているformを色々と弄ってあげればOK。

(※上記参照)

 

と、ここまでは使い方がソースコードとともに説明されてあるから良いけど、

logout以降はサンプルソースとか使い方が詳細に書いていない!

本当にどこにも書いてない上に、ググっても出てこないので、

django使いはソースコードを読んで理解しているのか!?

 

ということで、ソースコード直接読んで何となく理解しました。

基本的にはフィールドの設定とバリデーションを組んでいるだけで、

templateは利用するフィールドを理解していれば、

あとはPOSTするだけでOKな感じ。

 

具体的には

1. {% form %}とか{% for field in form.base_fields %}{{  field }}{% endfor %}とかで

出力するフィールド名をメモ

2. 対象フィールド名をformタグ内に書き込む(ex.  {{ form.old_password}})

な流れで不自由なく使えると思う。

 

っていうかそんな大したソースじゃないのでgithubで解析するのが一番かも。

 

で、password_changeはこんな感じで動いた。

 

ユーザ管理関連ってログイン、ログアウト、パスワード変更、パスワードリセットとありふれた感じで

DRY原則に則るならば、ビルトインも使えこなせるようにならないと!と思いました。

Older posts

© 2017 freedom-man.com

Theme by Anders NorenUp ↑