python

汎用ビューを使う

一覧や詳細は汎用viewを使いurls.pyに記述することが可能。 from django.conf.urls import patterns, include, url from django.views.generic import DetailView, ListView urlpatterns = patterns('', url(r'^$', ListView.as_view( queryset=modelname.ob…

view定義からURLパターンを取得

urls.pyにこう記載がある時に urlpatterns = patterns('', url(r'^myappli/(?P<id>\d+)/$', 'appli.views.methodname'), ) viewで from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect return HttpResponseRedirect( re</id>…

リクエストデータへのアクセス

viewメソッドに def vote(request): と渡されるので、 name = request.POST['name'] id = request.GET['id'] などとしてアクセスできる。

Http404返却のショートカット

これを from django.http import Http404 try: hoge = Hoge.objects.get(pk=id) except Hoge.DoesNotExist: raise Http404 return render_to_response( "hoge.html", {'hoge':hoge} ) こー書くことができる from django.shortcuts import render_to_response…

django.shortcuts.render_to_response

こう書く場合 from django.template import Context, loader def action( request ): t = loader.get_template('filename') c = Context({ 'key': value, }) return HttpResponse(t.render(c)) 以下のようにショートカットして記述することができる from dja…

django model作成

djangoチュートリアルを流し中。 はじめての Django アプリ作成、その 1こうゆうmodelを作成すると from django.db import models dir( models ) class Poll( models.Model ): question = models.CharField( max_length=200 ) pub_date = models.DateTimeFie…

python manage.py shellが起動しないよう

mac環境にて $ python manage.py shell 実行時に以下エラーでプロンプトが起動できない。 File "/Library/Python/2.7/site-packages/pyreadline/modes/emacs.py", line 11, in <module> import pyreadline.logger as loggerで、これで解決。 $ sudo easy_install-2.7</module>…

djangoでpostgresqlを使用

先ずは、postgresql側でdatabaseを作成 $ createdb samplesetting.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'sample', # …

hash関数

hashlib moduleを使用する >>> import hashlib >>> dir(hashlib) ['__all__', '__builtins__', '__doc__', '__file__', '__get_builtin_constructor', '__name__', '__package__', '_hashlib', 'algorithms', 'md5', 'new', 'sha1', 'sha224', 'sha256', 'sh…

CSVファイルの作成

csv moduleを使用する #! /usr/bin/python # coding: utf-8 import csv import codecs #すべてクォーテションで囲む csv.excel.quoting = csv.QUOTE_ALL #csv data data = [] for i in range( 0, 10 ): data.append( (str(i)+"line", "test,"+str(i)) ) csvf…

zipフィアル操作

>>> import zipfile >>> # sample.txt を sample.zipに圧縮 >>> z = zipfile.ZipFile( "./sample.zip", "w", zipfile.ZIP_DEFLATED ) >>> dir(z) ['NameToInfo', '_GetContents', '_RealGetContents', '__del__', '__doc__', '__enter__', '__exit__', '__in…

乱数の取得

randomモジュールを使用する >>> import random >>> dir(random) ['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', …

環境変数の取得

環境変数はos.environから参照できる >>> import os >>> for env in os.environ: ... print env ... VERSIONER_PYTHON_PREFER_32_BIT TERM_PROGRAM_VERSION LOGNAME USER PATH HOME TERM_PROGRAM LANG TERM SHELL VERSIONER_PYTHON_VERSION SHLVL TMPDIR TER…

file拡張子の取得

ファイルの拡張子を取得するにはos.path.splitextを使用する >>> from os import path >>> print path.splitext("sample.py") ('sample', '.py') >>> print path.splitext("/var/sample.py") ('/var/sample', '.py') >>> print path.splitext("/var/sample.t…

OSで使用している区切り文字の取得

OSが使用しているセパレーターを取得 os moduleの末尾がsepのものに定義されている >>> import os >>> for i in dir(os): ... if(i.endswith("sep")): ... i ... 'altsep' 'extsep' 'linesep' 'pathsep' 'sep' >>> #ディレクトリ区切り文字の代替文字 >>> pr…

モジュール内の定義済みの名前を取得

dir()を使用する。 >> dir() ['__builtins__', '__doc__', '__name__', '__package__'] >>> print __name__ __main__ >>> var1 = "test" >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'var1'] >> import sys >>> dir(sys) ['__display…

型リテラルの確認

type()で型リテラルの取得 >>> print type(10) <type 'int'> >>> print type("abc") <type 'str'> isinstance()で型リテラルを確認 >>> print isinstance(100, int) True >>> print isinstance(100, str) False</type></type>

dictionaryのkeyを取得する

dictionaryのキーを取得するにはiteritems() を使用する >>> dict = {"apple":2, "banana":3} >>> (apple,banana) =dict.iteritems() >>> apple ('apple', 2) >>> banana ('banana', 3) PHPのforeachのような使い方 >>> for key, value in dict.iteritems():…

listのindexを取得する

enumerateを使用する PHPでいうとforeach >>> list = ["apple", "orange", "banana"] >>> for index, value in enumerate(list): ... print index ... print value 0 apple 1 orange 2 banana

配列の逆順処理 reverse, reversed

listの逆順処理 reverseは入れ替え reversedは逆から読み出し #! /usr/bin/python # -*- conding: utf-8 -*- list = [] list.append("apple") list.append("banana") list.append("orange") #listを逆順配置 list.reverse() for value in list: print value …

ConfigParser package

外部設定ファイルとそのparserがある。 [section] var = value または var:value のように記述できる。config.ini [global] company = hoge [local] name = letitride url = d.hatena.ne.jp/letitride github : https://github.com/letitride読み出しは Conf…

lambda式

無名関数のようなもの。 >>> fumc = lambda arg1, arg2 : arg1 + arg2 >>> fumc(2, 5) 7 式なので、以下のように書くこともできる。 >>> func_list = [lambda arg: arg*1, lambda arg: arg*2] >>> for func in func_list: ... func(2) ... 2 4 >>> func_list…

パッケージの作成、読み込み

パッケージの作成 ファイル名がパッケージ名となる$ vi package_sample.py #! /usr/bin/python # -*- coding: utf-8 -*- def sample( arg1, arg2 ): return arg1 + arg2 パッケージの読み込み sys.path.appendでパッケージファイルの配置場所を登録。 import…

python クラスの継承

クラス名の後に継承するクラス名を()で囲んで記述する class WorkClass( SuperClass ): def __init__(self): SuperClass.__init__(self)

pythonのお勉強 classの作成

class keywordで宣言。 __init__は所謂コンストラクタの定義。selfはthisのように自身を指す。self引数は省略不可。 class test: def __init__(self, arg1, arg2): self.name = arg1 self.status = arg2 t = test( "TEST1", 1 ) print t.name

pythonのお勉強 関数の作成

def で宣言、作成する >>> #関数の作成 >>> def my_func(): ... print "my func" ... >>> my_func() my func >>> #引数つき >>> def my_func(arg1, arg2): ... print arg1 + arg2 ... >>> my_func("string1", "string2") string1string2 >>> #default引数 >>…

pythonのお勉強 例外処理

try〜except〜finalyで記述 raise句で呼び出し元に例外を通知 #! /usr/bin/python # coding: utf-8 def test( arg1, arg2 ): ret = 0 try: ret = arg1 + arg2 except: print "exception" #例外を送信 raise finally: print "finaly" return ret try: print t…

pythonのお勉強 loop

お馴染みのfor loopとwhile loopがありforは基本、コレクションをiterateする >>> list = ["itme1","item2","item3"] >>> for value in list: ... print value ... itme1 item2 item3 #dictionaryの場合はkeyが参照される >>> dict = {"k1":"item1","k2":"it…

pythonのお勉強その5 if条件式

条件式を()で括る必要がない。 { 処理... }を :とインデントで表す。 else ifはelifと記述する。 if value == "letit" and src == "": #インデントで制御する構文の為、「何もしない」を明示的に記述 pass elif value == "letit" and src == "ride": pass el…

pythonのお勉強その5 dictionary

dictionaryは所謂hash。 {}で初期化して扱える。 >>> dictionary = { ... "NAME" : "user name", ... "STATUS" : "1", ... } >>> print dictionary {'STATUS': '1', 'NAME': 'user name'} >>> for i in dictionary: ... print i ... print dictionary[i] ...…