AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

forms.Model と forms.ModelForm の 違いって

Django でアプリ作ってて、ふと気になったのでまとめてみた。ざっくり、こんな感じ?

機能 Model & Form ModelForm
validation 指示 Model & Form の両方で定義 Model で定義
フォーム上の項目 Form で定義 Model の定義から、ModelForm が自動決定 *対応表
フォームで表示する項目 Form で定義 ModelForm で定義
save メソッド Model.save() ModelForm.save() (Model.save() も使える)


DB の カラム以上のフィールドが不要なフォームでは、ModelForm を使うと断然コードが短く、簡潔になりますね。

ModelForm 利用時には、ModelForm の サブクラスに Meta クラスを作り、中に元になるModel (model = )や表示する項目 (fields =) に持たせることになります。Metaだけ持てば最低限OKになるので、Formの定義が超簡単!

また views.py の中でも、ModelForm が提供するものをメインで書けるようになり見通しがよくなります。


そもそものキッカケは、ManyToMany の 多対多 リレーションをはったModelに対するFormを上手く作る方法を知りたかったのです。Model & Form で頑張ってみたものの、ManyToMany になってるフィールドを上手く扱えず、ModelForm を利用した形で落ち着きました。なにが原因だったかは、また時間ができたら勉強しよう。

続きを読む

Mac に pythonz 入れる時の OPTION 設定

以前書いた pythonz on Mac の手順が、通用しないようだったので修正方法を探ってみました。

結果としては、pythonz で install する時にオプション設定をすることで解決しました。

MacOS ver 10.11.6 (OS X El Capitan)
/usr/local/opt/openssl 1.0.2j (by homebrew)
pythonz 2.0.1
導入する python 3.5.2
続きを読む

"/usr/bin/ld: cannot find -lxslt" が出て pip で lxml がインストール出来ない問題を解消

長年の問題が解決した。。。(発覚してから1年ほどで、解決に使った時間は4時間超)

python パッケージは主に pip で管理しています。たまに苦労するのが gccコンパイルが必要なライブラリ。BeautifulSoupとセットで使いたい lxml もコンパイルが必要なライブラリなのですが、こいつでハマりました。

状況と解決

pip install lxml を実行すると、ダウンロードした後、gccコンパイルが走り特定のところで落ちるという状況でした。

続きを読む

php シェルを使って簡単に検証

ちょっとしたコードの動作を確認したい場合に使えると思う。というか使った。

インタラクティブ Shell便利ー

$ man php
...
-a Run PHP interactively. This lets you enter snippets of PHP code that directly get executed. When readline sup-
port is enabled you can edit the lines and also have history support.

使い方の例

$ php -a
Interactive shell

php > print("Hello World");
Hello World
php > print(phpversion());
5.5.21
php > $imagickVersion = phpversion('imagick');
php > print($imagickVersion) ;
3.4.3RC1
php > exit
$

続きを読む

管理時に欲しくなる yum オプションをまとめておく

ついつい忘れてググッてしまう。

インストール済み

  • yum list installed : インストール済みパッケージを一覧表示

過去の履歴

  • yum history list all : 過去に実施した yum の履歴を一覧を全件表示
  • yum history info : 特定のTransaction IDの詳細表示
  • yum history list <パッケージ名> : 特定のパッケージ名の履歴
続きを読む