我正在使用带有python 3的requests
库。
我的目标是两个步骤:
我认为第一部分已正确设置,开发服务器注册POST请求。但是,我在第二步遇到了一些麻烦。
我创建了一个特殊的url和html模板,以便在发出POST请求后查看是否有任何内容被拾取。视图以这种方式处理:
def new_instance(request):
instance = 'Nothing picked up!'
if request.method == 'POST':
post = request.POST['ID']
instance = IDInstance(id=post)
instance.save()
return render(
request,
'viewpage.html',
context = {'instance':instance})
但是,实例变量和我的数据库都不会更新。
正在进行的请求如下所示:
Info = {'ID':'23234234'}
r = requests.post(domain,data=Info)
答案 0 :(得分:0)
关于Django Docs的CSRF保护的讨论:https://docs.djangoproject.com/en/1.11/ref/csrf/
该页面还包含有关如何覆盖此信息的信息。我曾使用过页面上列出的“装饰器方法”,但我建议您阅读页面并根据安全要求确定要使用的机制。
我也遇到了与本地Node.js服务器类似的问题。使用this Chrome extension帮助我在本地系统上修复它。你可以试一试。
答案 1 :(得分:0)
您正在做的是有效地创建API端点。
您应该为此网址停用CSRF保护,因为您的外部应用程序将没有该令牌。这样做很好。
对于你的第二个问题,你仍然不清楚你对此感到困惑。当然你需要一个观点;由Django中的请求触发的任何操作都由视图处理。正如我所提到的,就浏览器中提交表单的用户触发的请求与发出直接HTTP请求的外部进程之间的Django而言,没有任何区别。它们以完全相同的方式工作。
在该视图中,您可以通过request.POST
或request.body
访问数据。