2009-01-01から1年間の記事一覧
djangoでユーザーがログイン済かどうかをチェックする場合は通常 @login_required デコレータを使用するけど、 IDとパスワード以外の要素でログインチェックしたり、未ログインのユーザーを独自のログイン画面に遷移させる 場合は、カスタマイズしたデコレー…
一応動くサンプル。あんまりテストしてないので、取得できないパターンはあるかも。 覚えておきたいのはxpathの設定方法で、 どうやら //head/title/text() と書くとたまにうまくタイトルが取得できない場合があるようで、 そんな場合でも //title/text() と…
TumblrのRSS解析を試みていて、そこでQuote登録した文字列を検索して変換しようとしたところ、苦労したのでメモ。 RSSのソースを見たところ、引用した部分は二重引用符で囲まれているようだったので、普通にダブルクオートで検索してみたけどうまくヒットし…
from django.db import models class UserAlertManager(models.Manager): def additional_method(self): "追加するメソッド" ... class UserAlert(models.Model): user = models.ForeignKey(User) ... objects = UserAlertManager() これで、下記のように追…
画像を外部URLから取得する際に画像フォーマットが分からない場合、下記の方法で取得できた。 Python Imaging LibraryとDjangoを使った方法。 import urllib from PIL import Image from django.core.files.base import ContentFile image_url = "画像ファイ…
各サービスのAPIでも取得できるようだけど、一応こんな方法でもできた、ということで。 import urllib2 def get_real_url(url): r = None try: r = urllib2.urlopen(url) except: pass if r: url = r.geturl() return url long_url = get_real_url("短縮URL"…
Honjalaに新規登録されたブックマークをTwitterに自動投稿するスクリプトを書いた。 ブログやブックマークをTwitterに自動投稿する機会は今後もありそうなのでメモ。 準備 Twitterとbitlyにアカウントをあらかじめ作成しておく。 PythonからTwitter APIを利…
ここ数件のプロジェクトでリストやテーブルの行追加、削除やソート、上下移動などの処理を書く事があったので、メモしておく。 今回は行の上下移動。 リストの各行に「上へ」「下へ」というボタンなりリンクなりアイコンなりを配置しておき、それをクリック…
新しい開発環境を構築するにあたり、またApacheとmod_pythonで構築するのもアレだな、ということで流行のnginxを試してみた。 だいたいの情報は、 nginxホーム http://nginx.net/ NginxJa http://wiki.nginx.org/NginxJa nginx 一人 nginx 勉強会 第一回 ngi…
フォーム入力後の確認画面で入力内容を表示する場合、 form.フィールド名.data で入力値を取得できるようなんだけど、choicefieldやmodelchoicefieldを表示した場合は dataにpk値が入っているようで、これを入力画面と同じラベル名で表示したい。 簡単に実現…
毎回忘れて探し回るので、ここに書いておく value = then_value if predicate else else_value こちらより http://www.shido.info/py/python10.html
Djangoのformsに含まれるChoiceFieldやMultipleChoiceFieldだと、 choicesが必須なので、あらかじめ用意されたデータしか入力できない。 既存のデータではなく、タグやasinなどの文字列をWeb画面上で複数入力なり選択なりし、 それを文字列のリストとして処…
IPアドレスを増やさずにドメインベースで複数のドメインを運用しつつSSLを使えないかと 調べたところ、Apacheだけでは無理だけどリバースプロキシを使えば何とかなりそうだったので、やってみた。 元々 Apache + mod_python + SSL でDjangoアプリを運用して…
本サーバのログを見ていたらCPU警告だらけになっていたので、チューニングして効果のあったものを記録していく。 参考にしたページ Google App Engineを高速化する3つのtips http://mattn.kaoriya.net/software/lang/python/20080526182049.htm ディスク<帯…
他に方法が思いつかなかったので、親ウィンドウ側に関数を用意して それをThickbox側から呼び出す方法をとった。 iframe版しか考えていないので、ajax版の使い方だとまた別の方法があると思う。 parent.html <head> ... <script type="text/javascript" src="jquery-1.3.1.min.js"></script> <link rel="stylesheet" href="thickbox.css" type="text/css" /> </link></head>
import logging logging.debug(form_data)
また使いそうなので記録。指定ディレクトリ内の.svnやらCVSやらを一括削除するためのスクリプト。 バグがあるかもしれないので、削除処理をコメントにして削除対象を確認できるようにしておく。 recursive_delete.py # -*- coding: utf-8 -*- import os impo…
日本語が化けて大変苦労したのでメモ。 結論として、XML(またはHTML)を解析する前にunicode関数に通しておく、 ということで良いのかな? 相変わらず文字コード関連はよく分からない。 from urllib import urlopen from lxml import etree html = urlopen(…
今後も使えそうなのでメモ。 import re from django.core.exceptions import ObjectDoesNotExist from sample.web.models import WebPage PATTERN = r'<a href="%(dummy_url)s" >%(real_url)s</a>' HTML_TEMPLATE = re.compile(r"((http|https)://[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)"…