Django项目的金字塔状路线

Rhetoric的Python项目详细描述


修辞

https://pypip.in/v/Rhetoric/badge.pnghttps://pypip.in/d/Rhetoric/badge.pnghttps://api.travis-ci.org/avanov/Rhetoric.pnghttps://coveralls.io/repos/avanov/Rhetoric/badge.png?branch=develop

状态: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的集成

  1. django.middleware.csrf.CsrfViewMiddleware替换为 rhetoric.middleware.CsrfProtectedViewDispatchMiddleware在项目的MIDDLEWARE_CLASSES

    # somewhere in a project_name.settings moduleMIDDLEWARE_CLASSES=[# ...'rhetoric.middleware.CsrfProtectedViewDispatchMiddleware',#'django.middleware.csrf.CsrfViewMiddleware',# ...]
  2. 在项目的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())
  3. 注册视图:

    # 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'}
  4. 从这里开始,您可以使用不同的方法请求/test/new/routes/<param>

文件

请参见http://rhetoric.readthedocs.org/上的完整文档

更改日志

  • 0.2.3
    • 在首次访问属性后缓存request.json_body值。
  • 0.2.0
  • 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不稳定。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java MySQL准备的语句未从JavaFX文本字段读取   java在Karaf的OSGi包中使用jboss resteasy(客户端)   Diamond不编译Java 7   Java中的超类和子类   使用PL/Java和JPA或其他持久性库的postgresql   java由于大写而导致“无法识别的字段”   javascript客户端未接收来自Servlet的响应   java如何保持从url下载到imageview的图像的质量,并将其裁剪成圆形?   java如何在EditText更改时从ArrayAdapter中删除项?   java我应该怎么做?我不能使用jUnit等   java在int[]b;中查找对;?   java为什么我的HBase启动后没有任何日志?   java无法在发布模式下启动活动(使用proguard安卓optimize配置)   java在绘制绘图线后取消选择绘图线   java Android和Robotium编写自动化测试?