我有一个输出JSON的刮刀。我想以编程方式读取此输出(例如,每天)并通过像Tastypie这样的RESTful API将其反序列化为我的Django模型。我想在更新模型之前检查任何重复的条目/验证数据。
最佳做法和最无缝的方法是什么?
-
来自Scraper的JSON输出(返回结构化数据)
注意:exchange_id是我的Django模型中的Exchange对象的外键
{ “网站”:“http://www.igg.com/”, “exchange_id”:1, “自动收报机”:“8002”, “full_name”:“IGG Inc” }
Django模型
class Company (models.Model):
ticker = models.CharField(max_length=10, null=True)
full_name = models.CharField(max_length=200, null=True)
exchange = models.ForeignKey(Exchange, null=True)
website = models.URLField(null=True)
def __unicode__(self):
return self.ticker
def website_url(self):
if self.website:
return '<a href="%s">%s</a>' % (self.website, self.website)
else:
return ''
website_url.allow_tags = True
class Meta:
verbose_name_plural = "Companies"
答案 0 :(得分:0)
我将假设您的应用是私有的,只有您可以访问它。你可以做的是用模型形式实现django-restless。
from restless.http import Http201, Http400
from restless.views import Endpoint
from .forms import NewCompanyForm
class APIEndpoint(Endpoint):
"""
Endpoint for posting json data to server
"""
def post(self, request):
company_form = NewCompanyForm(request.data)
if company_form.is_valid():
# Check for duplicate data
# ...
if unique:
company_form.save()
return Http201({"message": "Post successful"})
else:
return Http400(reason='Data was not unique')
else:
return Http400(reason='You did not post a valid input')
此外,这是一个使用此库的示例应用程序https://github.com/dobarkod/django-restless/blob/master/testproject/testapp/views.py
答案 1 :(得分:0)
据我了解,您需要一些工具通过RestAPI将数据发布/放入您的服务。看看slumber。它非常简单,非常好与tastypie交互。