顯示具有 GAE 標籤的文章。 顯示所有文章
顯示具有 GAE 標籤的文章。 顯示所有文章

2011年7月23日 星期六

在GAE使用Distinct(配合template)

前幾天在使用資料庫的時候發現了一個方法,通常在讀取資料庫的時候沒辦法使用MySQL、MS SQL裡的 Distinct,在抓重複的值的時候會多抓但又沒辦法只抓單筆

於是我也不知道去哪裡想出來的方法,配合template語法,在for裡加入ifchanged就可以有Distinct效果

{% for i in billdb %}
    {% ifchanged %}
        <option value="{{i.bill_idnum}}">{{i.bill_idnum}}</option>
    {% endifchanged %}
{% endfor %}


2011年5月30日 星期一

[GAE] reCaptcha 應用Python

首先先在 recaptcha 這裡申請網站 Domain Name


之後會給你 Public Key 跟 Private Key 等等會用到


接著在裡選擇語言 here 這裡介紹Python


先從 這裡下載python用的 python_recaptcha-client 下載解壓縮後將 \recaptcha\client\captcha.py 放在你的gae目錄底下

接著在你的檔案 import captcha
呼叫此函數captcha.displayhtml('public_key') 在public_key 裡放入剛剛取得的 Public Key,會回傳一段reCaptcha 的 html


前端的部份就完成,然後在你的post那裡取得你的 recaptcha_challenge_field 、recaptcha_response_field和設定你的private_key跟你的Domain Name



recaptcha_challenge_field = self.request.get('recaptcha_challenge_field')
recaptcha_response_field = self.request.get('recaptcha_response_field')
private_key = 'private_key'   #剛剛取得的private_key
remoteip= 'domain_name '  #剛剛申請的domain_name 

呼叫 captcha.submit(recaptcha_challenge_field,recaptcha_response_field,private_key,remoteip)

會回傳你剛剛在reCaptcha t輸入的是否為正確(return boolean) 就完成啦!!


全部語法

import captcha
from google.appengine.ext import webapp

# Captcha   
domain_name = 'you_domain_name'
public_key = 'public_key'
private_key = 'private_key'

class test(webapp.RequestHandler):
    def get(self):
        captcha_html = captcha.displayhtml(public_key)
        self.response.out.write(captcha_html)
        
    def post(self):
        recaptcha_challenge_field = self.request.get('recaptcha_challenge_field')
        recaptcha_response_field = self.request.get('recaptcha_response_field')
        private_key = private_key
        remoteip = domain_name
    
        ans = captcha.submit(recaptcha_challenge_field,recaptcha_response_field,private_key,remoteip)
        
        self.response.out.write('ans= '+str(ans.is_valid))


有問題可以參考這篇 reCaptcha_to_php 應該大同小異,或是
直接參考 google recaptcha api

2011年5月14日 星期六

GAE 使用Session

網址:gae-sessions

下載完後,將gaesessions資料夾放入子目錄

在修改 appengine_config.py 裡的 9行
COOKIE_KEY = 'do not use this key'
更改成
COOKIE_KEY = os.urandom(64)


使用方法和一些函數使用
session = get_current_session()  

session['a'] ='a'  

session.has_key('a')

session.terminate()


session = get_current_session()  
建立 session

session['a'] ='a' 
設立一個為a的session值為'a'

session.has_key('a')
判斷是否有a這個session return bool

session.terminate()
刪除session並終止該用戶


詳細函數可以至gaesessions目錄下的__init__.py


2010年8月6日 星期五

[GAE] 時區設定 Asia/Taipei

在GAE裡的時間是以 格林威治時間 為準


若要調整成現在 Asia/Taipei 


from datetime import timedelta, datetime

Asia_Taipei_datetime = datetime.now() + timedelta(hours=8)



from datetime import timedelta, datetime
要引入的套件


Asia_Taipei_datetime = datetime.now() + timedelta(hours=8)

主要拆成datetime.now()  跟 timedelta(hours=8)


datetime.now()
因為GAE裡的時間是以 格林威治,所以在這函數所抓到的時間是以格林威治為準

timedelta(hours=8)
在來 Asia/Taipei 跟格林威治所訂置的時間,剛好相差8小時,所以要再加上8小時


dateNow = datetime.now() + timedelta(hours=8)
因此兩個相加就會等於 Asia/Taipei 的時間(若是其他時區位置也是同樣方法)

2010年7月16日 星期五

[GAE] 在 Eclipse 安裝PyDev


在 Eclipse 安裝 PyDev,可用 Eclipse 開發 Pyhon 專案


首先 ,先下載 Eclipse Download (在此以 version :3.6.0 做說明)

執行後選 [ Help -> Install New Software... ]
點選 [ Add... ]
在 [Location: ]  http://pydev.org/updates



安裝後在 Eclipse 功能表選擇 [ window -> Preferences -> Pydev -> Interpreter - Python ]
接著按下 [ New ] 選擇 Python 的安裝目錄,並選擇 [ python.exe ]











選擇 [ File -> Project... -> Pydev -> Pydev Project ]
在 [ Grammar Version ] 選擇 2.5 版本。然後記得取消建立src目銀的選項














專案建立後,為在讓專案的檔案編使用 UTF-8
在專案上右鍵選擇 [ Properties -> Resource ]











然後一樣左邊目錄 [ PyDev - PYTHONPATH ]
將hello專案的根目錄加入到 PYTHONPATH











接著在專案上按右鍵 [ New -> File ] 建立app.yaml














並將內容修改


app.yaml
application: hello
version: 1
runtime: python
api_version: 1

handlers:
- url: /
  script: main.py


在建立 main.py 選擇 [ New -> Pyev Module ]













並將內容修改
main.py
print 'Content-Type: text/plain'
print ''
print 'Hello, world'



在執行程式之前,必須先設定Goolge SDK
選擇 [ New -> Folder ]














連結建立完後,在專案上右鍵,選擇 [ Run As -> Run Configurations...]
在左邊目錄找 [ Python Run (點兩下)  ]
在 [ Project ] 輸入 hello
在 [ Main Module ]  找dev_appserver.py










接著切換到 [ Arguments ] 設定參數
將 [ Program arguments: ]  設為 .
在 [ working directory ] 設成 workspace










執行後 出現
INFO     2010-07-15 20:26:11,663 appengine_rpc.py:159] Server: appengine.google.com
INFO     2010-07-15 20:26:11,671 appcfg.py:357] Checking for updates to the SDK.
INFO     2010-07-15 20:26:15,536 appcfg.py:366] Update check failed: <urlopen error The read operation timed out>
INFO     2010-07-15 20:26:15,661 dev_appserver_main.py:431] Running application hello on port 8080: http://localhost:8080


[GAE] Google App Engine (GAE) 部署


首先先至Google申請帳號 點圖申請GAE

Google 應用服務引擎技術提供

download Google SDK

由於Google App Engine 目前的運作環境是用 Python 2.5.2 ,所以你可選擇下載「 Python 2.5.x 」版本來安裝

 


安裝python 影像處理函式庫 PIL