例子:本项目在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视图。