プラットフォーム:Google App Engine(Python)データベース:Google Cloud SQL
私は基本的にサイドバーとメインビューを備えたシンプルなウェブページを持っています。サイドバーは基本的にデータベースのレコードのセットで構成されており、そのうちの1つをクリックすると、データベースからより詳細な情報を取得してメインビューに表示したいと思います。
ハンドラーでdefget(self)を使用しようとしましたが、変数が読み取られていません。def get(self)でself.request.get('variable')を使用することは可能ですか?それ以外の場合、変数をdef post(self)からdef get(self)に渡す方法はありますか?
以下は私が使用しているコードのほとんどです。以下のコードとは別に、結果をテンプレートに渡します。テンプレートは、AJAXを使用してもう一度フェッチされます。その部分は期待どおりに機能します。
//HTMLコード
<table class="query-results user">
<tbody>
{% autoescape on %}
{% for row in user_queries %}
<tr class="query-results">
<td class="query-user">
<img class="query-user-avatar" src="../img/avatars/{{ row.1 }}_32x32x32.png"><br />
</td>
<td class="query-main" data-queryid="{{ row.8 }}">
<span class="query-title">{{ row.2 }}</span><br />{{ row.3 }}</br>{{ row.0 }} || {{ row.5 }} ago
</td>
</tr>
{% endfor %}
{% endautoescape %}
</tbody>
</table>
// AJAX-変数をQueryTabハンドラーに送信します:
$("td.query-main").live('click', function(){
var queryid = $(this).data("queryid");
var dataString = 'queryId='+ queryid;
$.ajax({
type: "GET",
url: "/querytab",
data: dataString,
success: function () { alert("data sent: " + dataString) }
});
return false;
});
Pythonコード:
class QueryTab(webapp2.RequestHandler):
def get(self):
query_id = self.request.get('queryId')
fmt = '%Y-%m-%d %H:%M:%S'
conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs')
cursor = conn.cursor()
cursor.execute('SELECT q.userNickname, a.avatar, q.queryName, q.queryDescription, q.queryValue, q.dateCreated, q.dateLastUpdated, q.activeFlag, q.uniqueId, q.entryID FROM queries AS q LEFT JOIN avatarPrefs AS a ON q.userNickname = a.userNickname WHERE q.activeFlag ="true" AND q.uniqueId = %s ORDER BY q.dateLastUpdated DESC LIMIT 6', (query_id))
self_query = [[str(row[0]), str(row[1]), str(row[2]), str(row[3]), str(row[4]), str(timesince(datetime.strptime(str(row[5]), fmt))), str(timesince(datetime.strptime(str(row[6]), fmt))), str(row[7]), str(row[8]), str(row[9])] for row in cursor.fetchall()]
template_file_name = 'templates/querytab.html'
template_values = {
'self_query': self_query,
'query_id': query_id,
}
path = os.path.join(os.path.dirname(__file__), template_file_name)
self.response.out.write(template.render(path, template_values))
conn.close()