我需要從API中提取一些數據。它返回XML中的GET,並且我有一些問題試圖找出如何將API中的一些數據分配給django/python模型中的字段。從API調用返回的XML中分配變量
activeCollab的API不允許我創建自己的projectID號碼,它會自動爲我生成號碼。所以我想取這個數字,然後把它分配給我的項目模型中的API_id字段。有人可以幫我弄清楚如何獲取GET返回的XML並將其分配給我的一個字段。
的項目ActiveCollab API文檔: http://www.activecollab.com/docs/manuals/developers/api/projects
這裏是我的models.py
class Project(models.Model):
client = models.ForeignKey(Clients, related_name='projects')
created_by = models.ForeignKey(User, related_name='created_by')
#general information
API_id = models.IntegerField(max_length=10, verbose_name='aC ProjectID', null=True, blank=True)
proj_name = models.CharField(max_length=255, verbose_name='Project Name')
pre_quote = models.CharField(max_length=3)
quote = models.IntegerField(max_length=10, verbose_name='Quote #', unique=True)
estimator = models.ForeignKey(User, related_name='Estimator', null=True)
desc = models.TextField(verbose_name='Description', null=True, blank=True)
starts_on = models.DateField(verbose_name='Start Date')
due_date = models.DateField(verbose_name='Due Date', null=True, blank=True)
completed_on = models.DateField(verbose_name='Finished On', null=True, blank=True)
notes = models.TextField(verbose_name='Notes', null=True, blank=True)
Views.py
def addProject(request):
if request.method == 'POST':
form = AddSingleProjectForm(request.POST)
if form.is_valid():
project = form.save(commit=False)
project.created_by = request.user
today = datetime.date.today()
project.pre_quote = "%s-" % (str(today.year)[2:4])
project.quote = Project.objects.latest().quote+1
project.save()
project.status.create(
value = form.cleaned_data.get('status', None)
)
#API activeCollab
params = urllib.urlencode({
'format':'xml',
'submitted':'submitted',
'project[name]': project.proj_name,
'project[overview]': project.desc,
'project[starts_on]': project.starts_on,
'project[leader_id]': 10,
})
req = urllib2.Request("web_url/public/api.php?path_info=/projects/add&token=####################", params)
f = urllib2.urlopen(req)
print f.read()
return HttpResponseRedirect('/project/')
else:
form = AddSingleProjectForm()
return render_to_response('project/addProject.html', {
'form': form, 'user':request.user}, context_instance=RequestContext(request))
任何建議將不勝感激。
Steve
Ps。我所顯示的API調用來創建一個新項目
到底是什麼問題了嗎?您提交請求並返回XML似乎很滿意。你有什麼問題? – 2010-11-12 15:48:24
該部分正在工作,但事情是項目ID是不同的。 activeCollab中的ID與我的django項目中的ID不同。因此我不知道如何編輯呼叫或刪除呼叫,因爲ID不一樣。 – TheLifeOfSteve 2010-11-12 15:49:47