dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Python

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (4)

前回 書いたコード、しばらく経ってからアクセスすると AccessTokenRefreshError なるエラーが発生することがわかった。 ERROR 2015-03-13 15:12:12,692 base.py:210] Internal Server Error: /task_manager/ Traceback (most recent call last): File "/App…

[Google App Engine]NDBのIn-Context Cacheについて

In-Context Cache とは https://cloud.google.com/appengine/docs/python/ndb/cache#incontext 1 リクエスト内で有効なキャッシュ 速度は In-Context Cache < Memcache < Datastore の順 In-Context Cache が microseconds に対し、Memcache は milliseconds…

[GAE][django]djangoのクラスベース汎用ビュー用の@login_required

ユーザーがログインしていなかった時にログイン画面にリダイレクトしてくれる @login_required デコレータ。 SDK に標準で備わっているものは Django に適用できなかったので作った。 コード util.py は参考までにオリジナルの appengine/ext/webapp/util.py…

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う 記事一覧

長くなりそうなので、過去記事一覧をここにまとめ。

[GAE][django]django+pytest でImproperlyConfiguredエラー

GAE(python) + django で、フォームのテストをしていた時に発生した。 (テストには pytest を使っている) ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_…

[python]strip()の引数を省略すると空白だけでなく改行も除去される

文字列の先頭と末尾から指定した文字を除去する strip([chars]) というメソッド。 これ、引数を指定しないと空白文字を除去するというのを今日知りました。 # 引数指定 >>> 'www.example.com'.strip('cmowz.') 'example' # 引数なし >>> ' www.example.com '…

[GAE][django] GAE+djangoで開発を始めるための自分流Scaffoldを作った

新しく Google App Engine のアプリを作ろうと思った時に 既存のアプリを一旦コピーして、必要なもの以外は削除して...という作業が面倒なので Scaffold (と呼んでいい?)的な初期ファイル群を作ってみた。 特徴 README にも書きましたが パッケージ管理に…

[python]SimpleHttpServerがCtrl+Cで終了しないとき

以前 D3.js を使ってみた時の記事でも紹介したが、 python の SimpleHttpServer (python 2.x 系の場合) を使うと簡単にローカルサーバーを起動することができる。 # python 2.X $ python -m SimpleHTTPServer [ポート番号] # python 3 $ python -m http.serv…

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (3)

前回の記事はこちら。 views.py を変更し、とりあえず Task 一覧を表示できるようになった。

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (2)

前回 から引き続き。 とりあえず認証のリダイレクトが機能しつつ、 Credentials を NDB に保存できるところまで。

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (1)

タイトルの通り。 Google App Engine で Tasks API を利用した簡単なアプリを作ろうとしたがOAuth2 の認証でハマってしまい、 現在も解決していないが調査記録をメモ。 最終的に解決したら別の記事として整理したい。

[GAE] buildoutでライブラリのバックアップを作成しない

ちょいメモ。 以前 Google App Engine の外部ライブラリをzc.buildout で管理する 方法を書きましたが その時に気になっていたのが、./bin/buildout を実行するたびにライブラリのバックアップが作成されること。 $ ./bin/buildout Updating packages. packa…

[vim]Syntasticでpython用の設定をする

vim で様々なプログラミング言語の文法チェック(syntax check) を 自動で行ってくれるプラグイン「Syntastic」ですが そのまま python ファイルに適用すると不要な警告まで色々出てしまい少々うっとうしいです。 ので、Syntastic と、今回は syntax checker …

[GAE] Google App Engine の単体テストにpytestを使う(with zc.buildout)

タイトル通り、Google App Engine のユニットテストに pytest を使うため 以前勉強した zc.buildout でセットアップしてみた時のメモ。 GAE のライブラリを zc.buildout で管理する方法については以下の記事をご覧ください。

zc.buildoutでversion conflictエラーが出た時の対処法

久しぶりに zc.buildout を使ったら以下のようなエラーが出た。 $ ./bin/buildout Upgraded: setuptools version 8.2.1; restarting. Generated script '/Users/...(略).../bin/buildout'. While: Installing. Getting section packages. Initializing secti…

zsh + virtualenv環境でGoogle Cloud SDKをインストール

ちょっとハマったのでメモ。 zsh + virtualenv という環境だと、インストールするのにちょっと注意が必要みたいです。

[GAE] Repeated Property について

ちょいメモ。 ndb の "Repeated Property" について、仕様として気になることをちょっと調べてまとめてみました。

[python]関数でデフォルト引数を使う時の注意点

「パーフェクトpython」読んでます。 パーフェクトPython (PERFECT SERIES 5)作者:Pythonサポーターズ,露木 誠,ルイス・イアン,石本 敦夫,小田 切篤,保坂 翔馬,大谷 弘喜技術評論社Amazon 1個1個のトピックについて非常に説明が詳しいので、python という言…

[python]文字列置換(フォーマット)まとめ(format関数, %dなど)

python による文字列置換の書き方について。 いくつかあるのでまとめてみました。 python は2.7。 色々調べましたが、公式ドキュメントが一番詳しかった気がします。 (文中にリンクあり。または「リファレンス」参照)

[django]templatesディレクトリを配置する場所(ベストプラクティスを考えてみた)

djangoでテンプレートファイルを管理する時、置き場所の候補はたぶん2つ考えられます。(*1) project ディレクトリの直下にtemplatesディレクトリを作り、その下に application ごとのサブディレクトリを作る 各 application ディレクトリの直下にtemplatesデ…

[GAE]zc.buildoutでGoogleAppEngineの外部ライブラリを管理する

前回の記事でpythonのライブラリ管理ツールであるzc.buildoutを一通り触ってみましたが、 今回はこのzc.buildoutを使ってGoogle App Engineの外部ライブラリを管理する仕組みを構成してみます。

[python]リストからNoneでない最初の要素を取得する

ちょいメモ。 いきなりやり方。 # "items"はlist item = next((item for item in items if item), 'All are Nones') ここで、第2引数はNoneでない要素がなかった時に返されるデフォルト値なので、何でもいいです。

[django]URLconfで指定した数値(integer)が文字列(unicode)になる

Google App Engine + Djangoという組み合わせでのほんとにちょっとした話。 Djangoのバージョンは1.5 です。

[GAE][django]テンプレートでエンティティのIDを取得する

ちょいメモ。 最初、テンプレートに{{ entity.id }}とかやってたんだけど よく考えるとGAEのエンティティのIDはKeyクラスから取得するんですよね。 NDB Key Class | App Engine standard environment for Python 2 | Google Cloud つまり、pythonのコード中…

[python]Buildout(zc.buildout)を触ってみる

pythonのライブラリ管理ツールとして知られるzc.buildoutを使ってみました。 zc.buildoutは引っかかる日本語の情報が少ないのですが、 こちらの記事が非常に参考になりました。(というかここだけでOK)

[django]クラスベースビュー(Class-based views)のCSRF対策を無効にする

DjangoのミドルウェアにCSRFミドルウェア(django.middleware.csrf.CsrfViewMiddleware)を指定していると、 csrf_tokenを渡していないPOSTメソッドは403エラーになってしまいます。 ただし、外部からのアクセスを可能にしたい場合など、特定のViewのメソッド…

[GAE]urlsafeなKey名から元のKey名を取得する

想定しているシチュエーションとしてはこんな感じ。 データストアのあるモデルのKey名には、特定の情報を連結した文字列をurlsafeでBASE64エンコードした文字列を使っている エンティティのKey名に使用しているurlsafeな文字列だけがわかっていて、その文字…

[django]アプリケーション名を取得する

テンプレートなどにアプリケーション名を直書きしたくないので 取得する方法がないか調べてみた話。

[python]オブジェクトのピクル(pickle)化

pythonで開発していたとき、pickleという聞き慣れない単語が出てきたので軽く調べてみた。 ちなみに、pickleという単語を辞書で引くと ~をピクルス[塩漬け・酢漬け]にする 〔金属を〕酸洗いする (SPACE ALCで検索した結果) ということで訳の分からない感…

Google App Engine Python Tutorialのメモ(5)

(追記)その他のメモ Google App Engine Python Tutorialのメモ(1) - dackdive's blog Google App Engine Python Tutorialのメモ(2) - dackdive's blog Google App Engine Python Tutorialのメモ(3) - dackdive's blog Google App Engine Python Tutorialの…