ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2018年1月8日月曜日

ひさしぶりのPythonで Djangoしてみるための参考サイトとメモ


環境

  • Amazon Linux 2
  • Python 3(現時点で3.6.4)
  • Django(現時点で2.0)


参考サイトとメモ

Pythonの復習とバージョン3のキャッチアップ

Pythonの基礎の基礎の基礎 - Qiita
Python3基礎文法 - Qiita
Python2からPython3.0での変更点 - Qiita
with構文とは何なのか - 年中アイス

Amazon Linuxで環境構築

Amazon LinuxでPython3系を使う - Qiita
  • Apacheは別途(先に)yumで入れた
  • pipもできるようになった
  • 今回は別にpyenv使わなくても、yumでpython3を入れれば良かったかも

Djangoでサンプルアプリを作りながら全体像を把握する

ほぼコピペで進めるが(おそらくDjango2で試した影響で)いくつか読み替えをした。

Djangoを最速でマスターする part1 - Qiita
(参考(github) gragragrao/manager_project: 「Djangoを最速でマスターする」ための参考レポジトリ
from manager.models import *
python manage.py runserver 0:8000
ALLOWED_HOSTS=[‘*’]

Djangoを最速でマスターする part2 - Qiita
  • Debug ToolbarのINTERNAL_IPSはApacheのリバプロとかあるから変えるかと思ったけどそのままでいけた
  • python shellのログインユーザー登録でWarningが出たけど、とりあえず無視...
/usr/bin/.pyenv/versions/3.6.4/lib/python3.6/site-packages/django/db/models/fields/__init__.py:1365: RuntimeWarning: DateTimeField Person.birthday received a naive datetime (2018-01-04 00:00:00) while time zone support is active.
  • view.pyのCustomLoginViewの下記はメソッドじゃなくなったみたい
if self.request.user.is_authenticated(): #'bool' object is not callableと怒られる
if self.request.user.is_authenticated:
  • login.htmlはGithubからコピーした
  • hijackは下記エラーでうまくいかなかったのであきらめた
ModuleNotFoundError: No module named 'hijack'
  • 自動テストはmodelとview(いわゆるMVCの"View"というより、Djangoのviewはどちらかというと"Controller"の方が近い感じか?)を対象にしていくようだ。templateのテストとなると言及されているSelenium(今ならHeadless Chrome?)とかと連携させていく?(参考 はじめての Django アプリ作成、その 5 | Django documentation | Django


Django1と2の違いを抑える

Django 2.0の変更点について - Qiita

そんなに変わらなそう。

Django公式チュートリアルでアプリを作成しながら学ぶ

さぁ始めましょう。 | Django documentation | Django / はじめての Django アプリ作成、その 1~7

普通は先にこっちをやるんだろうけど、公式は丁寧な分だけ全体像が見えてくるまでに時間がかかる。コピペでいけばエラーも出ないから、Python/Djangoに慣れるには、公式じゃないのでエラーにつまずきながら進めた方がいいこともある。
Ruby On Rails と違って、マイグレーションは完全にモデルのファイルから生成されます。マイグレーションは本質的には単なる履歴です。 Django はデータベースのスキーマをアップデートしながら履歴を進んでいき、現在のモデルに合致させることができます。
  • Django adminは便利そう。(参考 はじめての Django アプリ作成、その2 | Django documentation | Django
    settings.pyでLANGUAGE_CODEを'ja'にしたら日本語化された。システムよりの人が使うなら、英語の方が混乱が無いか? エンドユーザーに渡すなら日本語化が手軽なのは便利。
    それにしても、adminっていう名前はもうひとひねりしても良かったのでは...。Pythonの文化なのかな?

アノテーションが気になるので調べた

Python と型アノテーション

現時点では...使わないかなぁ。


Pythonのインストーラについて

Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

いくつかかいつまむと、
  • pip: とりあえずこれを使っておけばOK。Python3.4以降ではPython本体に同梱されるようになった。(参考 Pythonで一番最初に入れるべきパッケージ setuptools と pip - Life with Python
  • setuptools: これを入れると付属するeasy_installが使えるようになる。
  • easy_install: 昔使った時はデファクトスタンダードっぽかったが、廃れたのか。
  • PyPI: the Python Package Index。自由にPythonのパッケージを公開できる python.orgのサイトで、easy_install・pipはここからパッケージを探す。

Amazon RDSのAurora(MySQL)につないでみる

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
python manage.py makemigrations <アプリ名>
python manage.py migrate

Django公式ドキュメントで仕様を学ぶ


いつか時間のある時に...

2016年11月19日土曜日

chalice お試しメモ

chalice (Python Serverless Microframework for AWS)をAmazon Linuxに入れてHello Worldしたのでメモ。


1. aws configure

Amazon Linuxならaws(AWS CLI)は最初からインストールされている。
configureで認証情報を登録する。

参考 【AWS】CLIの初期設定について(認証情報とコマンド補完) - TASK NOTES


2. chalice

参考 GitHub - awslabs/chalice: Python Serverless Microframework for AWS

必要に応じてrootで作業する。


マネジメントコンソールから確認したところ、下記が登録されていた。

  • API Gateway
  • CloudWatch(のメトリックス)
  • IAM(のロール)
  • Lambda(大きすぎてマネジメントコンソール上では参照・編集できない)

また、実行後にCloudWatchにログが登録された。


アクセス制限はAPI GatewayはAPIキー認証しかできないので、前にCloudFront+AWS WAFを置くか、アプリケーション側でやるか。(ちょっとめんどくさい。EC2くらい手軽にできるとよいのだが。)

不明点

  • API Gatewayのステージを指定してデプロイする方法(設定ファイルを書き換えるしか無い?deployコマンドの引数で指定したいが…)
  • LambdaのVersionかAliasを指定する方法。これができないと、API Gatewayでステージを分けても、みんなLATESTのLambdaに行ってしまってステージを分けた意味がない…


2011年3月25日金曜日

プログラム言語とフレームワークのオンラインマニュアル29選


Webで公開されている、プログラム言語・フレームワーク・DBのマニュアル(リファレンス)サイトへのリンクをまとめてみた。
選んだ基準は、できるだけ日本語で、なるべく分かりやすいこと。それを満たすなら公式リファレンスより非公式のものを優先している。



JavaScriptのマニュアルは他にも色々あり、使う人のレベルや用途によってどれが使いやすいかが変わってくると思うが、昔大変参考にさせて頂いた杜甫々版を挙げておいた。

Python、Perl、Objective-Cについては公式/準公式のリンクを書いたが、有志によるマニュアルでもっと良いものがあるのかもしれない。(これらの言語はあまり使わないので知らない。)

2010年3月26日金曜日

Windowsに Google App Engine開発環境 + Django 1.1をセットアップする

WindowsにDjango1.1をインストールする方法



Google App EngineでDjango1.1を使う設定
  • "Google AppEngine で Django 1.1 を使う | METAREAL"の通りにすればOK。
  • templateのimportはuse_library()をセットした後でないとエラーになる。
    • 間違えると、AppEngineを再起動するまでエラーが解消されない(?)

2009年7月28日火曜日

OAuth調査メモ

OAuthの仕様を理解するための調査のメモなど。


2009年7月12日日曜日

Pythonのメソッドのパラメータの不思議

Windows上のPython2.5のPytyon Shellで確認した。

こんなclassがあったとする。

class Test(object):
 def foo(self):
  return [self.bar(), self.bar({'buz': 10})]
 def bar(self, p={'buz': 1}):
  p['buz'] += 1
  return p

下記のように、dict型の引数pに初期値が設定されているメソッドbar()を引数無しで呼ぶと、前回呼んだ時のメソッド内の変数pの値が使われるようだ。
>>> Test().foo()
[{'buz': 2}, {'buz': 11}]
>>> Test().foo()
[{'buz': 3}, {'buz': 11}]

ちょっとびっくり。引数の型がdictの場合だけでなく、配列でも同じことが起きた。


また、classじゃなくても同じ現象になった。
def test(foo={'bar': 1}):
 foo['bar'] += 1
 return foo

>>> test()
{'bar': 2}
>>> test()
{'bar': 3}
>>> test({'bar': 10})
{'bar': 11}
>>> test()
{'bar': 4}
引数を付けた時だけ別になっている。

2009年5月7日木曜日

Google App Engine 調査メモ

リファレンス



Tips

2009年2月25日水曜日

PHPで携帯からアクセスを IPアドレスで判定

PHPで高速に携帯ゲートウェイのIPから携帯キャリアを判別する - グニャラくんのグニャグニャ備忘録@はてなを使うと簡単に判定できる。

Python3.0では動かなかったが、Python2.6にしたら動いた。

PHPファイルとして保存する内容は標準出力に出るので、ファイルへ出力して保存する 。

携帯キャリアのIPが変わったらPHPも作り直す。


(2009/02/25 追記)
WILLCOMはIP公表ページのURLが変わっていた。しかし新しいURLに変更しても、判別ロジックに現れない。IPアドレスの書き方が違うから拾えない?
どちらにしろWILLCOMはフルブラウザ?なら携帯扱いしなくてもいいかも。

ブログ アーカイブ

tags