2019年10月20日
  • Just another WordPress site

「パーフェクトPython」(その05)ーMini Wikiについて【追記】

  • 2013年12月10日

「パーフェクトPython」でPart3の最後にMini Wikiについての説明があります。ただし、Wikiをいくつ作ったかが、はっきりしません。それで、作ったWikiを表示するソースを入れてみました。


【1】前提
動作させる方法は必要なパッケージをインストールしたあと、$ cd wikiとして、271頁に記してあるように $ python3 -m py3wikiを実行します。ソースコードは、すべて__init__に記載されています。ただし、setuptoolsのインストールの仕方が書いてありません(見落とし?)ので、https://pypi.python.org/pypi/setuptoolsで取ってきてインストールする必要があります。

【2】修正(追加)箇所
次の箇所です。空のediturls=[]から数行を追加します。現在のwiki以外のwikiをすべて拾ってくる内容です。ただし、オブジェクトを拾ってくるので、pagename.page_nameとしてwiki名を取得する必要があります。しかし、サイト管理者の環境では何故か、ここのところを挿入するとエラーが発生し、かなりの時間、ハマりました。

@wsgify
def page_view(request):
    page_name = request.urlvars[‘page_name’]
    edit_url = request.environ[‘webdispatch.urlgenerator’].generate(‘page_edit’, page_name=page_name)
    pagenames = DBSession.query(Page).filter(Page.page_name != page_name).all()
    editurls = []
    for pagename in pagenames:
        editurls.append(request.environ[‘webdispatch.urlgenerator’].generate(‘page_edit’,page_name=pagename.page_name))
    try:
        page = DBSession.query(Page).filter(Page.page_name==page_name).one()
        tmpl = env.get_template(‘page.html’)
        return tmpl.render(page=page,edit_url=edit_url,editurls=editurls)
    except NoResultFound:
        return HTTPFound(location=edit_url)

PythonによるWebアプリというのも、また、面白い。
なお、テンプレートのpage.htmlに他のWikiを表示するくだりを付け加える必要があります。

【3】修正したpage.htmlの内容

{% extends “base.html” %}
{% block title %}{{page.page_name}}{% endblock %}

{% block main %}
{{page.html_contents}}
<a href=”{{edit_url}}”>Edit</a>

<h3>【Wiki List】</h3>
<div style=”text-align: center;font-color: red”>
<ul>
{% for editurl in editurls %}
<li><a href=”{{editurl}}”>{{editurl}}➤Edit</a></li>
{% endfor %}
</ul>
</div>
{% endblock %}

【4】その他
Active StateのKomodo IDEはとても良いのですが、如何せん、高い。EclipseをScript言語の開発環境に変更したAptanaStudio3は、日本語化も可能かつデバッグ機能もついて無償です。ただし、Komodo IDEはマイナーバージョンアップでもインストールできるようですね。

コメントを残す

CAPTCHA