Mayaaのような事をPython+Django+Dojo+JSONでやってみる
JSONを使ってHTMLにデータを表示させてみるサンプル。
ふん!JSP(ASP,PSP)なんてもうつかわん!
でMayaaっぽいことをjavascriptでやってみる。
都合上、Djangoで実験。
まずHTMLから
form.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>sample</title> <script type="text/javascript" src="/src/js/dojo.js"></script> <script type="text/javascript"> var djConfig = {isDebug: true}; //djConfig.debugAtAllCosts = true; </script> <script type="text/javascript"> dojo.require("dojo.io.*"); function test(doc){ d = doc; var bindArgs = { url: "./getjson/", mimetype: "text/json", load: function(type, json, http) { dojo.debug("http:", http); dojo.debug("response:", http.responseText); dojo.debug("state:", http.readyState); dojo.debug("--------"); dojo.debug("json:", json); dojo.debug("- Key/value pairs -------"); for(var key in json) { var node = d.getElementById(key); if(node != null){ node.innerHTML = json[key]; } dojo.debug(key, ":", json[key]); } } }; var canBind = dojo.io.bind(bindArgs); } </script> </head> <body> <p>マッピングサンプル</p> last_name : <input id="last_name" type="text" /> <p /> first_name : <input id="first_name" type="text" /> <p /> <input type="button" value="ボタン" onclick="test(document);" /> </body> </html>
url.py
from django.conf.urls.defaults import * from django.conf.settings import MEDIA_URL, MEDIA_ROOT urlpatterns = patterns('', # Example: (r'^edit/form*', 'edit.core.views.main.form'), (r'^edit/getjson/', 'edit.core.views.main.getjson'), )
view.pyでJSONを返すように実装。
view.py
def form(request): return render_to_response('edit/form') def getjson(request): s = """ { now: new Date(), last_name: "fucker", first_name: "sucker", username: "mopemope", passwd: "mother fucker", arrayOfNums: [1, 2, 3, 4, 5], toString: function() { return this.last_name + ", " + this.first_name; } } """ return HttpResponse(s)
これで終わり。
2バイト文字系はエンコードしないと文字化けします。
ちょっと考慮する必要アリです。
ちなみにjson-pyを使っていれば辞書を渡してやればjson文字列が返りますのでこれでいけます。
return HttpResponse(json.write(object))
JSON-RPCを使ってる方は以下を参考にしてみて下さい。
http://memo.jj-net.jp/12
(特にZOPE使ってる方向けかな)
うくく。