我正在使用suds来使用wsdl从第三方请求数据.我现在只保存一些返回的数据,但是我正在为我得到的数据付费,所以我想保留所有数据.我已经决定保存这些数据的最佳方法是将原始xml响应捕获到数据库字段中,以备将来使用,如果我决定要开始使用数据的不同部分,并在发生差异时作为文件跟踪.
所以我有两个问题:
有没有一种简单的方法从suds.client对象输出原始接收的xml?在我搜索到这个问题的答案时,我已经了解到这可以通过日志记录来完成,但我希望不必将日志中的信息反馈到数据库字段中.我也进去看了MessagePlugin.recieved()挂钩,但无法真正弄清楚如何它已被解析后访问这些信息,只有我可以覆盖该功能,因为它是被解析访问原始的XML(这是在我决定它是否真的值得保存之前.我还研究了retxml选项,但我也想使用解析版本并进行两次单独调用,一次作为retxml,另一次解析将花费我两次.我希望在suds客户端中内置一个简单的函数(比如response.as_xml()或同样简单的东西),但还没有找到类似的东西.在我的头上冒泡周围的选择可能是使用它进行解析之前,稍后引用了保存XML作为对象参数.received()插件钩来扩展客户对象......但这样的执行似乎有点我现在很难接受,而且我很难相信肥皂水的客户不仅仅是已经把它建在某个地方,所以我想我会先问.
我的问题的另一部分是:什么类型的django模型字段最适合处理高达~100 kb的文本数据作为原始xml?我打算简单地使用一个简单的CharField和一个愚蠢的长max_length,但这感觉不对.
提前致谢.
我正在使用谷歌日历api将事件添加到另一个网站的谷歌日历.当我尝试创建一整天的事件时,我遇到了一个问题.我可以轻松地将datetime.timedelta(days = 1)添加到从上午12点开始的日期时间对象,但这会创建一个事件,该事件从00:00开始,到23:59结束,而不是全天事件(存在差异) )
这里用C#和JAVA语言解决了类似的问题,但在python中没有
谷歌apis事件创建文档在这里.在Python中,基本上你提交一个简单的json对象来创建一个定义了事件参数的事件.
这是我的代码尝试全天活动:
creds = customer.get_calendar_creds()
http = creds.authorize(httplib2.Http())
service = discovery.build('calendar', 'v3', http=http)
calendar = service.calendars().get(calendarId=customer.calendar_id or 'primary').execute()
tz_string = calendar['timeZone']
gc_tz = pytz.timezone(tz_string)
start_time = gc_tz.localize(parser.parse(calendar_event_form.cleaned_data['date']))
end_time = start_time + datetime.timedelta(days=1)
start_string = start_time.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
start_string = start_string[:-8] + start_string[-5:] # removing miliseconds
end_string = end_time.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
end_string = end_string[:-8] + end_string[-5:]
event = {
'summary': calendar_event_form.cleaned_data['name'],
'location': calendar_event_form.cleaned_data['location'],
'description': calendar_event_form.cleaned_data['description'],
'start': {
'dateTime': start_string,
'timeZone': tz_str,
},
'end': { …Run Code Online (Sandbox Code Playgroud)