ページを作るときはやっぱりlayouts.viewなどのように部分を切り出したいですよね?(Laravel脳)
import csv
csv_file = open(config.csv_path, "r",
encoding="utf_8", errors="", newline="")
f = csv.DictReader(csv_file, delimiter=",", doublequote=True,
lineterminator="\r\n", quotechar='"', skipinitialspace=True)
CSVを辞書型で読み込めます。
jinjya2(神社)というテンプレートがあったのでそちらを流用
falskなど有名フレームワークでも採用されている。
今更ながらFlaskで実装してもという後悔の念がありますが、車輪の再開発にも学びがあるはず。
layout.html
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 共通ヘッダ -->
{% block head %}
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
</head>
<body>
<!-- コンテンツ部分 -->
<div id="content">
{% block content %}
{% endblock %}
</div>
<!-- 共通フッター -->
<div id="footer">
{% block footer %}
© Copyright 2008 by <a href="http://domain.invalid/">you</a>.
{% endblock %}
</div>
</body>
</html>
page.html
{# childe.tpl 子テンプレート #}
{% extends "/template/layouts.html" %} {# 親テンプレートを指定 #}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
{% set text='aaaa' %}
<h1>{{ title }}</h1>
<p class="important">
Welcome to my awesome homepage.
</p>
{% endblock %}
page.htmlを読み込むとlayouts.htmlも読み込める
from jinja2 import Template, Environment, FileSystemLoader
for row in f:
template_path = "/template/page.html"
env = Environment(loader=FileSystemLoader('.'), trim_blocks=False)
template = env.get_template(template_path)
disp_text = template.render(row)
うん。これは便利
個別ページはこんな感じになった。
for row in f:
template_path = "/template/page.html"
env = Environment(loader=FileSystemLoader('.'), trim_blocks=False)
template = env.get_template(template_path)
disp_text = template.render(row)
dir_path=os.path.join('build',row['cat_lv01_slug'],row['cat_lv02_slug'])
filename=""+row['slug']+'.html'
#書き込み関数
write_page(dir_path, filename, disp_text)
次はカテゴリーページを実装してみる
第1回 | Pythonで作る俺俺静的サイトジェネレーター |
第2回 | テンプレート機能を実装 Pythonで作る俺俺静的サイトジェネレーター |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント