(機械翻訳)設計

以下では、チュートリアルの作業中に行う変更を理解するのに役立つ、Wikiアプリケーションの設計の概要を簡単に説明します。

全体

wikiテキストに:term: reStructuredText`マークアップを使用することを選択します。 reStructuredTextからHTMLへの変換は広く使われている ` docutils`` Pythonモジュールによって提供されています。このモジュールをプロジェクト `` setup.py``ファイルの依存関係リストに追加します。

モデル

`` Wiki``という名前のルートリソースは、wikiページ名とページリソースとのマッピングになります。ページリソースは、* Page *クラスのインスタンスになり、テキストコンテンツを格納します。

`` / PageName``のようなURLはWiki [* PageName *] =>ページを使用して移動され、結果として得られるコンテキストは既存のページのページリソースになります。

wikiにページを追加するには、ページリソースの新しいインスタンスが作成され、その名前と参照がWikiマッピングに追加されます。

A page named FrontPage containing the text This is the front page, will be created when the storage is initialized, and will be used as the wiki home page.

ビュー

wikiページの追加、編集、および表示の通常の操作に加えて、wikiフロントページの1つのビューを処理する3つのビューがあります。表示用に1つ、wikiページの追加と編集の両方に2つのテンプレートが使用されます。

バージョン1.5現在では、app: `Pyramid`はテンプレートシステムではなくなりました。このチュートリアルでは、term: `Chameleon`を使用します。 ChameleonはXMLベースのテンプレート言語であるterm: `ZPT`の変種です。

セキュリティ

最終的には、アプリケーションにセキュリティを追加する予定です。これを行うために使用するコンポーネントは次のとおりです。

  • USERS、辞書マッピング:term: `userids <userid> `を対応するパスワードに変換します。

  • GROUPS、辞書マッピング:term: `userids <userid>彼らが属しているグループのリストに。

  • `` groupfinder``は、USERSとGROUPSを検索する*認証コールバック*です。これは新しい `` security.py``ファイルで提供されます。

  • An:term: ACL`はroot:term: resource`に付加されています。下の各行は、用語: ACE

    アクション 主要な 許可
    許可する みんな ビュー
    許可する グループ:編集者 編集
  • アクセス許可の宣言がビューに追加され、各要求の処理時にセキュリティポリシーがアサートされます。

2つの追加のビューと1つのテンプレートがログインとログアウトのタスクを処理します。

概要

各ビューに関連付けられているURL、コンテキスト、アクション、テンプレート、および権限は、次の表にリストされています。

URL ビュー コンテキスト アクション テンプレート 許可
/ view_wiki ウィキ / FrontPageにリダイレクトする    
/ PageName ビュー_ページ[1] _ ページ 既存のページを表示する[2] _ view.pt 見る
/ PageName / edit_page edit_page ページ

既存のコンテンツを含む編集フォームを表示します。

フォームが送信された場合は、/ PageNameにリダイレクトします

edit.pt 編集
/ add_page / PageName add_page ウィキ

Create the page PageName in storage, display the edit form without content.

フォームが送信された場合は、/ PageNameにリダイレクトします

edit.pt 編集
/ログイン ログイン ウィキ、禁じられた[3] _

ログインフォームを表示します。

フォームが提出された場合は、認証してください。

  • 認証が成功すると、私たちが来たページにリダイレクトします。
  • 認証に失敗した場合は、&quot;ログインに失敗しました&quot;というメッセージでログインフォームを表示してください。
login.pt  
/ログアウト ログアウト ウィキ / FrontPageにリダイレクトする    
[1]これは、ビュー名がない場合のページコンテキストのデフォルトビューです。
[2]ページ* PageName *がまだ存在しない場合、Pyramidはデフォルトの404 Not Foundページを返します。
[3]`` pyramid.exceptions.Forbidden``は、ユーザが認証ポリシーによって許可されていないビューを呼び出そうとしたときに到達します。