以下の内容はhttps://ytyaru.hatenablog.com/entry/2018/04/22/000000より取得しました。


Python学習サイトの課題ページのデータを2つの.pyに分割した

課題全体で共通のとページ固有のデータに。

成果物

GitHubPython.pylangstudy.Subjects.Template.HTML.201705221559

今回

  • 出力するためのデータを精査する
    • 課題ページ共通
    • 課題ページごとに個別

分別だけはできた。

課題

大量生産にそなえる。

  • 出力するためのデータ受け渡し方法について考える
    • どうやってデータを取得するか
    • どうやってデータを保存しておくか
    • どうやってデータをスクリプトに渡すか

課題ページ作成に必要なデータの分類

整理されていないがメモとして残す。

課題ページ全体で共通

課題ページ固有

  • breadcrumbs_data = {
    • ‘datas’: [{‘text’: ‘孫’, ‘href’: ‘http://2’},{‘text’: ‘子’, ‘href’: ‘http://1’},{‘text’: ‘親’, ‘href’: ‘http://0’}]
  • metanavi_data = {
  • title = ‘課題1のタイトル’
    • と<h1>のテキストノードに指定する値</li> </ul> </li> <li>c = CodeOnly() <ul> <li>code_data <ul> <li>{ ‘path’: ‘0.py’, ‘lines’: [3, 7] }</li> </ul> </li> </ul> </li> <li>c = CodeCompare() <ul> <li>code_data <ul> <li>‘left’: { ‘title’: ‘python2’, ‘path’: ‘left.py’, ‘lines’: [3, 7] },</li> <li>‘right’: { ‘title’: ‘python3’, ‘path’: ‘right.py’, ‘lines’: [3, 7] }})</li> </ul> </li> <li>nextprevnavi_data <ul> <li>‘prev’: {‘text’: ‘前のページ’, ‘href’: ‘<a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://prev’">http://prev’</a>},</li> <li>‘next’: {‘text’: ‘次のページ’, ‘href’: ‘<a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://next’">http://next’</a>}</li> </ul> </li> </ul> </li> <li>c = CodeList() <ul> <li>title = ‘課題1のタイトル’</li> <li>code_data <ul> <li>[{ ‘path’: ‘0.py’, ‘lines’: [3, 7] },{ ‘path’: ‘left.py’, ‘lines’: [3, 7] },{ ‘path’: ‘right.py’, ‘lines’: [3, 7] }]</li> </ul> </li> <li>nextprevnavi_data <ul> <li>‘prev’: {‘text’: ‘前のページ’, ‘href’: ‘<a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://prev’">http://prev’</a>},</li> <li>‘next’: {‘text’: ‘次のページ’, ‘href’: ‘<a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://next’">http://next’</a>}</li> </ul> </li> </ul> </li> <li>html = self.__base.CreateHtml( <ul> <li>meta={ <ul> <li>‘title’: title,</li> <li>‘description’: ‘課題1の説明文。’,</li> </ul> </li> </ul> </li> </ul> <h1>所感</h1> <p>共通と個別のデータに分割したが、テンプレートタイプによって引数の形が異なる。テンプレートタイプはページ個別で変わるものだが、実装コードは同一にしたい。</p> <p>そもそも、データを<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/Python">Python</a>コードに書きたくない。SQLite3か、せめて<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/json">json</a>ファイルに。そもそも、データを手書きしたくない。<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/%A5%D1%A5%F3%A4%AF%A4%BA%A5%EA%A5%B9%A5%C8">パンくずリスト</a>の<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/%CC%DA%B9%BD%C2%A4">木構造</a>などを自動で取得したい。</p> <p>そもそも、<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/Python">Python</a>文書の見出しツリーを<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/%A5%D1%A5%F3%A4%AF%A4%BA%A5%EA%A5%B9%A5%C8">パンくずリスト</a>に表示するのは間違っている気がしてきた。<a class="keyword" href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://d.hatena.ne.jp/keyword/%BB%B2%BE%C8%B8%B5">参照元</a>とそのツリーとして表示するならいいが、そのサイトのナビではないから。</p> <h1>前回まで</h1> <ul> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/07/000000">http://ytyaru.hatenablog.com/entry/2018/04/07/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/09/000000">http://ytyaru.hatenablog.com/entry/2018/04/09/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/10/000000">http://ytyaru.hatenablog.com/entry/2018/04/10/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/11/000000">http://ytyaru.hatenablog.com/entry/2018/04/11/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/12/000000">http://ytyaru.hatenablog.com/entry/2018/04/12/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/13/000000">http://ytyaru.hatenablog.com/entry/2018/04/13/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/14/000000">http://ytyaru.hatenablog.com/entry/2018/04/14/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/15/000000">http://ytyaru.hatenablog.com/entry/2018/04/15/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/16/000000">http://ytyaru.hatenablog.com/entry/2018/04/16/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/17/000000">http://ytyaru.hatenablog.com/entry/2018/04/17/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/18/000000">http://ytyaru.hatenablog.com/entry/2018/04/18/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/19/000000">http://ytyaru.hatenablog.com/entry/2018/04/19/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/20/000000">http://ytyaru.hatenablog.com/entry/2018/04/20/000000</a></li> <li><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://ytyaru.hatenablog.com/entry/2018/04/21/000000">http://ytyaru.hatenablog.com/entry/2018/04/21/000000</a></li> </ul> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="ytyaru" >ytyaru</span></span> <span class="entry-footer-time"><a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/22/000000"><time data-relative datetime="2018-04-21T15:00:00Z" title="2018-04-21T15:00:00Z" class="updated">2018-04-22 00:00</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://blog.hatena.ne.jp/ytyaru/ytyaru.hatenablog.com/subscribe?utm_source=blogs_entry_footer&utm_medium=button&utm_campaign=subscribe_blog"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://ytyaru.hatenablog.com/entry/2018/04/22/000000" data-hatena-star-title="Python学習サイトの課題ページのデータを2つの.pyに分割した" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://ytyaru.hatenablog.com/entry/2018/04/22/000000"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://x.com/intent/tweet?text=Python%E5%AD%A6%E7%BF%92%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E8%AA%B2%E9%A1%8C%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%922%E3%81%A4%E3%81%AE.py%E3%81%AB%E5%88%86%E5%89%B2%E3%81%97%E3%81%9F+-+%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B&url=https%3A%2F%2Fytyaru.hatenablog.com%2Fentry%2F2018%2F04%2F22%2F000000" title="X(Twitter)で投稿する" ></a> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-bluesky" target="_blank" rel="noopener noreferrer" href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://bsky.app/intent/compose?text=Python%E5%AD%A6%E7%BF%92%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E8%AA%B2%E9%A1%8C%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%922%E3%81%A4%E3%81%AE.py%E3%81%AB%E5%88%86%E5%89%B2%E3%81%97%E3%81%9F+-+%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%0A%0Ahttps%3A%2F%2Fytyaru.hatenablog.com%2Fentry%2F2018%2F04%2F22%2F000000" title="Bluesky で共有する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_0" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user"></div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> <div class="entry-footer-modules" id="entry-footer-secondary-modules"> <div class="hatena-module hatena-module-related-entries" > <!-- Hatena-Epic-has-related-entries-with-elasticsearch:true --> <div class="hatena-module-title"> 関連記事 </div> <div class="hatena-module-body"> <ul class="related-entries hatena-urllist urllist-with-thumbnails"> <li class="urllist-item related-entries-item"> <div class="urllist-item-inner related-entries-item-inner"> <div class="urllist-date-link related-entries-date-link"> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/archive/2018/04/21" rel="nofollow"> <time datetime="2018-04-20T15:00:00Z" title="2018年4月21日"> 2018-04-21 </time> </a> </div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/21/000000" class="urllist-title-link related-entries-title-link urllist-title related-entries-title">Python学習サイトの課題ページのテンプレートをHTMLファイル出力した</a> <div class="urllist-entry-body related-entries-entry-body">ついにHTML出力できた。</div> </div> </li> <li class="urllist-item related-entries-item"> <div class="urllist-item-inner related-entries-item-inner"> <div class="urllist-date-link related-entries-date-link"> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/archive/2018/04/19" rel="nofollow"> <time datetime="2018-04-18T15:00:00Z" title="2018年4月19日"> 2018-04-19 </time> </a> </div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/19/000000" class="urllist-title-link related-entries-title-link urllist-title related-entries-title">Python学習サイトのHTML文字列クラスを結合してナビとコード文字列を生成した。</a> <div class="urllist-entry-body related-entries-entry-body">だいぶ形がみえてきた。</div> </div> </li> <li class="urllist-item related-entries-item"> <div class="urllist-item-inner related-entries-item-inner"> <div class="urllist-date-link related-entries-date-link"> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/archive/2018/04/15" rel="nofollow"> <time datetime="2018-04-14T15:00:00Z" title="2018年4月15日"> 2018-04-15 </time> </a> </div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/15/000000" class="urllist-title-link related-entries-title-link urllist-title related-entries-title">ファイルの指定行数テキストを抽出するスクリプトを書いた</a> <div class="urllist-entry-body related-entries-entry-body">Pythonで。</div> </div> </li> <li class="urllist-item related-entries-item"> <div class="urllist-item-inner related-entries-item-inner"> <div class="urllist-date-link related-entries-date-link"> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/archive/2018/04/13" rel="nofollow"> <time datetime="2018-04-12T15:00:00Z" title="2018年4月13日"> 2018-04-13 </time> </a> </div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/13/000000" class="urllist-title-link related-entries-title-link urllist-title related-entries-title">Python学習サイトのメタデータリンクを書いた。</a> <div class="urllist-entry-body related-entries-entry-body">前回のコードを流用して。</div> </div> </li> <li class="urllist-item related-entries-item"> <div class="urllist-item-inner related-entries-item-inner"> <div class="urllist-date-link related-entries-date-link"> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/archive/2018/04/09" rel="nofollow"> <time datetime="2018-04-08T15:00:00Z" title="2018年4月9日"> 2018-04-09 </time> </a> </div> <a href="http://nitrogen.sub.jp/php/Viewer.php?URL=https://ytyaru.hatenablog.com/entry/2018/04/09/000000" class="urllist-title-link related-entries-title-link urllist-title related-entries-title">パンくずリスト生成スクリプトから前後ナビを書いた。(未動作確認)</a> <div class="urllist-entry-body related-entries-entry-body">流用。</div> </div> </li> </ul> </div> </div> </div> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <!-- rakuten_ad_target_end --> <hr><br><br>以上の内容はhttps://ytyaru.hatenablog.com/entry/2018/04/22/000000より取得しました。<br>このページは<a href="http://font.textar.tv/">http://font.textar.tv/</a>のウェブフォントを使用してます<br><hr><center>不具合報告/要望等は<a Href="mailto:nitorogen.yaruo@gmail.com">こちら</a>へお願いします。<br><a Href="http://nitrogen.sub.jp/">モバイルやる夫Viewer</a> Ver0.14</center><right><img src="http://users565.lolipop.jp/cnt/accnt.php?cnt_id=1896073&ac_id=LAA0153431&mode=total"></right> <HR> <BR> <div style="zoom:490%"> <center> <a Href="http://yaruo.xyz"> <img src="YaruoBanner.png"> </a> </center> </div> <BR></body></html>