(機械翻訳)設計¶
以下では、チュートリアルの作業中に行う変更を理解するのに役立つ、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`の変種です。
セキュリティ¶
最終的には、アプリケーションにセキュリティを追加する予定です。これを行うために使用するコンポーネントは次のとおりです。
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] _ | ログインフォームを表示します。 フォームが提出された場合は、認証してください。
|
login.pt | |
/ログアウト | ログアウト | ウィキ | / FrontPageにリダイレクトする |
[1] | これは、ビュー名がない場合のページコンテキストのデフォルトビューです。 |
[2] | ページ* PageName *がまだ存在しない場合、Pyramidはデフォルトの404 Not Foundページを返します。 |
[3] | `` pyramid.exceptions.Forbidden``は、ユーザが認証ポリシーによって許可されていないビューを呼び出そうとしたときに到達します。 |