2011-09-27 27 views
0

我在我的Django Web应用程序(不使用Django表单实现)中执行POST请求的HTML表单。在Django Web应用程序中跨域重定向到部分填充的表单

现在我想实现一个功能,以便来自不同域的其他web应用程序(不一定是django)可以将一些数据发送到我的应用程序,并使用此表单重定向到网页,部分填充该数据(数据可以是JSON)。

此外重定向,点击我的形式提交用户后,我也希望将消息发送到其他服务器的一些简短的文字信息。

我不知道什么是最好的方式来实现这一点。 REST接口像Piston?

你能给我一些我应该遵循的大方向吗?

回答

1

你应该创建一个从形式和外部Web应用程序处理POST数据的视图。

你应该能够检查您是否在视图中所得到的数据是从您的网站或其他通过检查request.META [“HTTP_REFERER”]到来。

如果是来自您的网站,您可以像往常一样处理表单。

但是如果是从外部网站,你反而会呈现在它的形式模板。您可以将从外部网站获得的信息放入上下文中,以便您可以在模板中预填表单。

你也应该包括在形式的标志,这不能不说是从外部站点,是这样的:

<input type="hidden" name="external_site_url" value="{{ external_site_url }}"> 

表单提交之后,你可以检查的external_site_url存在。如果存在,则可以将消息发送到其他服务器。

注意,因为你希望其他应用使用您的看法,您必须对视图(https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#csrf-protection-should-be-disabled-for-just-a-few-views)禁用CSRF保护。

此外,通过允许其他应用使用您的看法,您正在打开自己注册了很多可能的攻击。要非常小心输入验证,只让视图能够完成它真正需要的功能 - 例如,您不希望外部应用程序能够删除数据库中的条目。

相关问题