コメントページに記事で描かれた絵を用意する
次に、テンプレートにデータベースから読み込んだ記事と絵を表示します。読み込む記事は、ホームページからのリンクによって「GET」送信されたarticle_idパラメータで決まります。ここで注意して欲しいのが、「data」変数は「データ」、「date」変数は「日時」です。print文で出力した内容は、HTML文書としてWebブラウザに送られます。
import pages.etc as etc
def html(form,con,cur):
article_id = int(form.getfirst('article_id', '0'))
speaker = ''
sentence = ''
title = ''
xy = ''
data = (article_id,)
sql = 'SELECT title,speaker,date,sentence,xy FROM article WHERE id = ?'
for row in cur.execute(sql,data):
if row[0] != None:
title = etc.get_html(row[0])
if row[1] != None:
speaker = etc.get_html(row[1])
if row[2] != None:
date = row[2]
if row[3] != None:
sentence = etc.get_html(row[3])
if row[4] != None:
xy = row[4]
print('''
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{} - 一筆書きBBS</title>
<link href="css/pc.css" rel="stylesheet" type="text/css" />
<link href="css/mobile.css" rel="stylesheet" type="text/css" media="only screen and (max-width:1023px)" />
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<script>loadPos("{}");</script>
<div id="left">
<header>
<h1>{}</h1>
<nav>
<a href="?page=home">HOME</a>
<a href="?page=draw">DRAW</a>
<a href="?page=about">ABOUT</a>
</nav>
</header>
<ul>
<li>{}<br />{}<br />{}</li>
</ul>
<h2>コメント</h2>
'''.format(title,xy,title,speaker,date,sentence))
【サンプルコードの解説】
「html」関数で、URLのarticle_idパラメータを「article_id」変数に取得します。
SQL文で「article」テーブルのidカラムがariticle_id変数の値の「title」カラムをrow[0]から、「speaker」カラムをrow[1]から、「date」カラムをrow[2]から、「sentence」カラムをrow[3]から、「xy」カラムをrow[4]から取得します。
「<script>loadPos("{}");</script>」にxy変数を渡してベジェ曲線の絵を描画し、記事をHTMLのリストタグに出力します。
コラム「jsファイルの更新方法」
外部jsファイルは、Webブラウザの更新ボタンを押しただけでは(キャッシュが原因で)最新版が読み込まれないことがあります。その場合はキャッシュをクリアする必要があります。 また、閲覧者がキャッシュをクリアしなくても最新版を読み込むようにするには、<script>タグのsrc属性で「js/main.js?ver=0.1」のようにバージョン番号(クエリパラメータ)を付与し、更新時にこのバージョンを書き換える方法が有効です。
