例子:本項目在D盤html
(1) C:\Users\Adminstrator>D: #進入到D盤python
(2) D:>mkdir test #新建目錄testweb
(3) D:\cd test #進入test目錄shell
(4) D:\test>pcreate -s starter myproject #新建項目名爲myprojectapp
(5) D:\test>cd myproject #進入項目框架
(6) D:\test\myproject>python setup.py develop 添加項目所須要的配置文件函數
(7) D:\test\myproject>pserve development.ini運行項目工具
一個簡單的pyramid項目建立成功!!!單元測試
cmd中 刪除非空目錄:>rmdir /s \q測試
清屏:>cls
(1) 項目根目錄下:product.ini 和 development.ini中加入「html」模塊支持
如:
; For Mako Template mako.directories = adview:templates mako.strict_undefined = true
(2)項目的 __init__.py文件的以下位置加入:
config = Configurator(settings=settings) config.add_renderer(".html", "pyramid.mako_templating.renderer_factory") config.add_static_view('static', 'static', cache_max_age=3600)
@view_config(route_name='home', reauest_methos="POST",accept='text/HTML') def myview(request): return Response("<h1>hello world</h1>")
Pyramid提供了一種聲明式的權限管理,能夠按照必定的受權策略保護view,以保證只有通過認 證的用戶才能訪問應用。在Pyramid中,權限管理體系被明確的分紅了認證和受權兩個部分。 認證系統將request中的身份證實轉化成一個或多個系統能識別的主體標識。這些表示表明了request中當前生效的用戶、組信息。 受權系統則根據獲得的主體標識、視圖配置、上下文決定是否有訪問權限。
三、將url路徑從__init__文件中分離出來,新建一個url文件並把路徑寫在url文件中
(1)__init__文件 from pyramid.config import Configurator
from project.url import add_adview
def main(global_config, **settings): config = Configurator(settings=settings) config.add_static_view('static', 'static', cache_max_age=3600) config.add_renderer(".html", "pyramid.mako_templating.renderer_factory") add_adview(config) #路徑 config.scan("project") #project爲項目名 return config.make_wsgi_app() (2)新建url.py文件 def add_adview (config): config.add_route (name = 'home', pattern = '/') 先看一下MyProject/目錄,這是一個典型的python工程發佈結構,其中的一些文件以下:
CHANGES.txt 變動說明,可使用ReStructuredText格式
MANIFEST.in 裝箱文件,決定哪些代碼會部署 README.txt 項目簡介,使用ReStructuredText 格式編寫。 development.ini PasteDeploy配置文件,用與開發階段 production.ini PasteDeploy配置文件,用發佈階段 setup.cfg和setup.py setuptools的配置文件和執行文件 若是須要對這個結構驚喜擴張,能夠參考python開源項目目錄結構。
在MyProject目錄下還會建立一個python package:myproject,這是放置Pyramid應用。若是用過Django,會發現這個目錄結構與Django的很像。簡單說明一下:
init_.py Python package初始化腳本。Pyramid框架在其中放置了一個main函數00,做爲一些命令(如pserve,pshell,pviews等)的入口。
models.py 模型代碼。在使用alchemy工程模板時刻文件包含了SQLAlchemy的基本代碼和一 個model類的例子 scripts 開發用的一些腳本工具 static web靜態文件 templates 模板目錄 tests.py 單元測試代碼 views.py 視圖代碼
1、Pyramid權限處理流程
1. 用戶用過一個特定的URL訪問應用,所以在應用中生成一個request。 2. 基於這個request的信息,經過resource定位找到一個上下文(context)(不管是漫遊仍是URL分發)。 3. 經過視圖定位找到一個合適的視圖, 4. 若是認證策略生效,將由此與request生成幾個主體(principal)的標識。 5. 若是受權策略生效,而且視圖配置中定義定義了permission參數,將由這它們以及上下文、主體標識來共同決定是否有權訪問這個視圖。 6. 若是受權成功,則調用視圖。 7. 若是受權失敗,則調用forbidden視圖。