我希望能够仅针对特定的HTTP方法类型在Plone中注册视图,例如。仅适用于POST,或仅适用于客户提交的特定Accept:
标头。
我知道使用常规ZCML配置指令配置View是不可能的。
是否还有其他可用于此目的的机制,缺少编写代理视图,将每个HTTP方法的请求委托给其他视图等等?
答案 0 :(得分:4)
答案 1 :(得分:3)
通常,大多数视图都遵循更新/渲染模式,通常将它放在update方法中是有意义的,这是一个与其他各种库一样进行权限/访问/数据完整性检查的公共位置。完整演示如下:
from AccessControl import Unauthorized
from zope.publisher.browser import BrowserPage
class PostOnlyPage(BrowserPage):
def update(self):
if not self.request.method == 'POST':
raise Unauthorized
def render(self):
return 'A POST only render'
def __call__(self):
self.update()
return self.render()
如果您这样做是为了使现有的库(例如z3c.form
)强制执行访问方法,您可以考虑执行以下操作:
class StrictPostForm(z3c.form.form.PostForm):
def update(self):
if not self.request.method == 'POST':
raise Unauthorized
super(StrictPostForm, self).update()