アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在PythonでWebサイトの作成を行っております。

自分のやり方の問題だとは思っているのですが文字列としてページAからページBに値を渡すことはできるのですが変数の状態で送ることができずに困っています。

現在のコードはこのように書いています。



>>> 渡す側 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#! /usr/bin/env python
# coding: utf-8
html_body= u"""
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>タイトル</title>
<link rel="stylesheet" href="../../css/library.css">
</head>
<body>
<h1>ヘッダー</h1>
数秒後に移動</br>
<meta http-equiv="refresh" content="3;URL="index.py"?id={0}">
</body>
</html>"""

print "Content-type: text/html;charset=utf-8\n"
print ( html_body.format([0,1,2,3]) ).encode('utf-8')


この方法でid={0}の部分で値を渡しています。
しかし、その前に文字列になってしまっているため受け取り側での処理がいろいろと面倒だったり
渡す際にいろいろ処理をしてから渡さないとならず手間がかかります。

どのように改善すれば良いでしょうか?

A 回答 (2件)

URLでこの形で送る以上は、文字列にしなければなりません。


したがって「データを文字列に変換する」「変換された文字列を元のデータに戻す」プログラムを用意するか、既にあるものを活用するか、です。

決まった方法はありません。
あなたがやろうとしている事に合っている方法を探してください。

例えば、 [1,2,3] 程度なら
id=1,2,3
というURLになるように空白とかを調整して送信。
受信側では、 1,2,3 を
','.split(~)
で分割。
とか。


データ量がそれほどでなければ、JSONやXMLという方法もあるだろうし、ある程度大きくなったらURLとしては使えないので、別の方法を考える必要があります。
    • good
    • 1
この回答へのお礼

なるほど、URLである以上は文字列・・・ですよね。
ありがとうございました。

面倒なデータはXMLなどを検討してみようと思います。

お礼日時:2014/12/18 11:37

WebというPythonの外を通しての通信、しかも、同じプロセスに戻ってくるとは限りません(片方はPythonでは無いかもしれない)




> しかし、その前に文字列になってしまっているため受け取り側での処理がいろいろと面倒だったり
渡す際にいろいろ処理をしてから渡さないとならず手間がかかります。

どの言語でも、このあたりは一緒です。
そのプログラムを自分で作るか、だれかが作ってくれたものを使うかだけです。

http://docs.python.jp/2/library/cgi.html
一応、PythonにもCGIモジュールがあります。

この回答への補足

cgiモジュールは利用しています。
しかし、

print ( html_body.format([0,1,2,3]) ).encode('utf-8')

にてHTMLの出力を行っている際
.formatでHTMLに文字列を置換しているわけでこの部分を解決しなければ
渡す側が文字列以外の型を渡せないと思います。
そしてその解決方法が分からず苦戦しています。

補足日時:2014/12/17 11:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!