Django项目的金字塔状路线
Rhetoric的Python项目详细描述
修辞
状态:beta,API不稳定。
为django项目实现类似金字塔的路由。
为什么值得你花点时间
关于金字塔路由子系统为何如此方便 网络开发人员- Pyramid view configuration: Let me count the ways。
作为一个使用金字塔作为他宠物项目的基础的人,Django在工作中, 我(作者)很有机会比较了两种不同的路由配置方法 由这些框架提供。我完全同意文章的要点-金字塔路线 对于编写REST服务的开发者来说更为灵活和方便。
<>标准Django URL调度器的灵活性缺乏激励了我 创建此项目。希望对你有用, 如果你喜欢修辞学url dispatcher背后的想法,请考虑 Pyramid Web Framework用于您将来的一个项目。项目经营场所
- 修辞成分尽量遵循相应的金字塔成分。
- 与Django应用程序的集成在任何可能的情况下对现有代码都是透明的。
- 修辞学url调度器的性能比金字塔调度器差,原因是 实现的天真性和与django api的兼容性带来的限制。
安装
修辞学作为PYPI软件包提供:
$ pip install Rhetoric
包装应与python2.7和python3.3或更高版本兼容。
与django的集成
将django.middleware.csrf.CsrfViewMiddleware替换为 rhetoric.middleware.CsrfProtectedViewDispatchMiddleware在项目的MIDDLEWARE_CLASSES:
# somewhere in a project_name.settings moduleMIDDLEWARE_CLASSES=[# ...'rhetoric.middleware.CsrfProtectedViewDispatchMiddleware',#'django.middleware.csrf.CsrfViewMiddleware',# ...]
在项目的root urlconf内部 (通常是project_name.urls):
fromdjango.conf.urlsimportpatterns,include,url# ... other imports ...fromrhetoricimportConfigurator# ... various definitions ...urlpatterns=patterns('',# ... a number of standard django url definitions ...)# Rhetorical routing# ------------------config=Configurator()config.add_route('test.new.routes','/test/new/routes/{param:[a-z]+}')config.scan(ignore=[# do not scan test modules included into the project treere.compile('^.*[.]?tests[.]?.*$').match,# do not scan settings modulesre.compile('^project_name.settings[_]?[_a-z09]*$').match,])urlpatterns.extend(config.django_urls())
注册视图:
# project_name.some_app.some_modulefromrhetoricimportview_config@view_config(route_name="test.new.routes",renderer='json')defview_get(request,param):return{'Hello':param}@view_config(route_name="test.new.routes",renderer='json',request_method='POST')defview_post(request,param):return{'Hello':'POST'}
从这里开始,您可以使用不同的方法请求/test/new/routes/<param>。
文件
请参见http://rhetoric.readthedocs.org/上的完整文档
更改日志
- 0.2.3
- 在首次访问属性后缓存request.json_body值。
- 0.2.0
- 端口custom predicates
- 删除了对api_version谓词的支持。
- 0.1.13
- 取决于金星1.0及更高版本。
- 允许在随后的金星扫描中重新分配相同的ADT案例实现。
- 0.1.9
- 添加了对request.json_body属性的支持。
- 0.1.8
- 添加了对request.responseapi的支持。
- 0.1.7
- 添加了对api_version谓词的支持。
- 添加了view_defaultsdecorator。
- 0.1.5
- 功能:添加了对视图配置的decorator参数的支持。
- 0.1.4
- 功能:添加了对自定义渲染器的支持。
- 0.1.2
- [错误修复程序2]:在rhetoric.view.ViewCallback中解析了竞争条件。
- [API]:^{TT14}$已重命名为 rhetoric.middleware.CsrfProtectedViewDispatchMiddleware。
- [django集成]:rhetoric.middleware.CsrfProtectedViewDispatchMiddlewareshould 现在完全替换MIDDLEWARE_CLASSES中的django.middleware.csrf.CsrfViewMiddleware。
- 0.1.0-初始PYPI版本。早期开发,API不稳定。