contentful内容交付api的python sdk
contentful.p的Python项目详细描述
用于Contentful内容交付api的python sdk。
设置
通过pip:
安装pip install contentful.py
用法
创建客户机
Client类管理您与contentful delivery api的所有交互,创建一个api非常简单:
client=Client('space-id','access-token')
获取资源
获取资源的最简单形式如下:
client.fetch(Asset).all()# Returns an array of Assetsclient.fetch(Asset).first()# Returns the first Asset availableclient.fetch(Entry).all()# Returns an array of Entriesclient.fetch(Entry).first()# Returns the first Entry availableclient.fetch(ContentType).all()# Returns an array of Content Typesclient.fetch(ContentType).first()# Returns the first Content Type available
当与all()方法一起使用时,需要返回一个Array对象,它是iterable:
forresourceinarray:dosomething(resource)
可切片:
forresourceinarray[2:4]:dosomething(resource)
自定义查询
可以通过调用Request对象的where()方法来提供自定义查询,例如:
client.fetch(Entry).where({'sys.id':'MyEntry'}).first()
定义模型
可以通过提供内容类型id值和定义一组字段来声明自定义条目类。考虑一下来自官方演示空间的Catcontent类型,如下所示(为了简洁起见,没有一些属性):
{"fields":[{"id":"name","name":"Name","type":"Text"},{"id":"likes","name":"Likes","type":"Array","items":{"type":"Symbol"}},{"id":"color","name":"Color","type":"Symbol"},{"id":"bestFriend","name":"Best Friend","type":"Link","linkType":"Entry"},{"id":"birthday","name":"Birthday","type":"Date"},{"id":"lives","name":"Lives left","type":"Integer"},{"id":"image","name":"Image","type":"Link","linkType":"Asset"}],"name":"Cat","displayField":"name","description":"Meow."}
此内容类型的自定义条目类可以定义如下:
classCat(Entry):__content_type__='cat'name=Field(Text)likes=Field(List)color=Field(Text)best_friend=Field(Link,field_id='bestFriend')birthday=Field(Date)lives=Field(Number)image=Field(Link)
在创建Client:
client=Client('cfexampleapi','b4c0n73n7fu1',custom_entries=[Cat])
每当这个Client试图创建一个内容类型与类中定义的内容类型匹配的Entry时,就会创建一个Cat类的实例,并相应地设置其字段,以后可以作为实例属性轻松访问:
print('Name of the Cat: {0}'.format(cat.name))
如果在任何时候只需要获取该类型的资源,则可以将其传递给fetch()方法,并由客户端进行推断:
client.fetch(Cat).all()# Fetches all the Cats!
链路分辨率
除非另有说明,否则Client配置为在获取资源时自动解析链接。 注意正确地提供include参数,因为只有当链接的资源包含在响应中时,它们才会被自动解析。如果未解析链接,则需要一个ResourceLink值,可以通过调用Client的resolve_resource_link()方法来解析该值(根据资源ID发出网络请求)。
自动链接解析:
array=client.fetch(Cat).all()print(array[0].best_friend)# <Cat(sys.id=nyancat)>
手动链接解析:
cat=client.fetch(Cat).where({'sys.id':'nyancat','include':0}).first()print(cat.best_friend)# <contentful.cda.resources.ResourceLink object at 0x1030df390>print(client.resolve_resource_link(cat.best_friend))# <Cat(sys.id=nyancat)>
许可证
版权所有(c)2015 Contentful GmbH。有关详细信息,请参见LICENSE.txt。