2011年8月16日火曜日

KayフレームワークでGETやPOSTの値を取得するメモ

GET値の取得は

localhost:8080/test?keyword=xxx の場合

def test(request):
  keyword = request.args.get('keyword')

こんな感じで、request.args.getで取得できる



POST値の取得は

def test(request):
  keyword = request.form['keyword']

こんな感じで、request.formで取得できる。



でも、ユーザー入力のリクエストを利用する場合は、そのまま利用しちゃうと危険なので、
入力値のValidateチェックするのがいいと思う。
その方法はまた別の機会に。

2011年8月15日月曜日

KayフレームワークでTwitterのダイレクトメッセージを送信する方法

参考:Kay Framework で Twitter につぶやきを投稿する方法

参考にしたサンプルはつぶやきの投稿だったんですが、ダイレクトメッセージ送信しようと思います。

  from myapp.models import User
  from google.appengine.api import urlfetch
  from myapp import oauth
  import settings

  # Twitter クラアイアントを使う
  client = oauth.TwitterClient(
      settings.GAEMA_SECRETS['twitter_consumer_key'],
      settings.GAEMA_SECRETS['twitter_consumer_secret'],
      None)

  query = Notification.all().order('-created')
  notifications = query.fetch(10)

  for notification in notifications:
      user_info = User.get_by_key_name(notification.user.key().name())
      access_token = user_info.raw_user_data['access_token']
      key = access_token['key']       # Access Key
      secret = access_token['secret'] # Access Key Secret
    
      # Twitter でつぶやく内容
      params = {"text": 'test','user': access_token['user_id'] }

      # つぶやきを投稿
      url = 'https://twitter.com/direct_messages/new.json'
      response = client.make_request(url=url, token=key, secret=secret,
          additional_params=params, protected=True, method=urlfetch.POST)

raw_user_dataっていうところにいろいろデータが詰まっているみたいです。
その中にTwitterのAPIで必要なaccess keyとaccess key secretがあるので取得して、ダイレクトメッセーを送信します。なるほどー

データストアのfilterを利用する場合、 = の前にスペースを入れる必要がある

http://linuxfree.ma-to-me.com/archives/000352.html


filter('url=', None) とすると、resultの件数が0件だった。(App Engine SDK 1.3.4で確認)
何が違うかというと、「url」と「=」の間にスペースを入れてないのだ。

Notification.all().filter('notification=', True)って最初書いてて、取得件数が0件だったので、Boolean型の場合、条件の指定方法が特殊なのかなって思ったら違った。

Notification.all().filter('notification =', True)
というように = の前にスペースを入れる必要がある。
まあ確かにって感じ。スペースあったほうが解釈楽だもんねw

2011年8月13日土曜日

PCセットアップメモ