1

有没有办法通过自定义脚本适配器中的发布请求将 PloneFormGen 表单数据传递到外部站点?

我的外部站点仅对服务器可见

帖子的网址是http://app.com/issues_form/issues

我在自定义剥离适配器中的脚本:

import urllib
import urllib2

url = "http://app.com/issues_form/issues"
values = {'issue' : request.form['issue'] }
data = urllib.urlencode(values)
urllib2.Request(url,data)

提交时我得到未经授权的访问或具有权限的东西

http://ploneapp.com/acl_users/credentials_cookie_auth/require_login?came_from=http%3A/ploneapp.com/structure/test/issue_form

当我使用 urllib.urlencode 时似乎会发生错误。

当我尝试对“请求”库使用另一种方式时,情况也是如此。也许我无法在这样的地方访问这样的图书馆。

4

2 回答 2

5

这是不可能通过自定义脚本适配器实现的,除非您绕过一些安全措施——这是不可取的。问题是 urllib 和 urllib2 库在受限 Python 中没有被标记为“安全”。“受限 Python”是可用于 TTW 脚本的 Python 子集。

如果你需要做这样的事情,你需要添加一个文件系统产品,可能是一个浏览器视图。您将在 Plone.Org 的产品部分中找到使用 PFG 输入执行此操作的包示例。大多数人关注外部支付或会员系统。你会发现他们处理了很多棘手的问题,比如线程和超时,以确保 Plone 不会因为等待帖子处理而陷入困境。

于 2012-10-16T19:44:16.670 回答
1

实际上,如果您将浏览器重定向到新站点,浏览器会自动将表单及其所有数据重新发布到该系统。确实,它不是在幕后发送这些数据,对用户隐藏,但是现在传递数据的站点现在可以开始显示其他选项/处理它。这很好,例如,如果有需要向其发布字段的在线付费类型的服务。比如信用卡处理。

然而,对于“隐藏”系统来说,没有那么好。这仍然有一些用途。

以下应该工作。我使用不同的版本,它获取文件夹中的图像列表并随机选择一个显示在网站上。


# REDIRECTING to a specific URL
# NOTE: Form Submissions will cause the browser to resend the data to the new site.
# get the HTML request and response objects.
# redirect the page to the other site and end function at the same time
return context.REQUEST.RESPONSE.redirect("http://app.com/issues_form/issues")

于 2013-10-30T18:34:25.307 回答