Skip to main content

contentful.py

travis

Python SDK for Contentful’s Content Delivery API.

Setup

Installation via pip:

pip install contentful.py

Usage

Creating a Client

The Client class manages all your interaction with the Contentful Delivery API, creating one is as simple as:

client = Client('space-id', 'access-token')

Fetching Resources

The simplest form of fetching resources follows:

client.fetch(Asset).all()         # Returns an array of Assets
client.fetch(Asset).first()       # Returns the first Asset available

client.fetch(Entry).all()         # Returns an array of Entries
client.fetch(Entry).first()       # Returns the first Entry available

client.fetch(ContentType).all()   # Returns an array of Content Types
client.fetch(ContentType).first() # Returns the first Content Type available

When used with the all() method, expect an Array object to be returned, which is iterable:

for resource in array:
    dosomething(resource)

and sliceable:

for resource in array[2:4]:
    dosomething(resource)

Custom Queries

Custom queries can be provided by invoking the where() method of a Request object, for example:

client.fetch(Entry).where({'sys.id': 'MyEntry'}).first()

Defining Models

Custom Entry classes can be declared by providing a Content Type ID value and by defining a set of fields. Consider the Cat Content Type from the official demo space, which looks like this (sans some properties for brevity):

{
  "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."
}

A custom Entry class for this Content Type can be defined as follows:

class Cat(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)

The class also has to be registered when creating a Client:

client = Client('cfexampleapi', 'b4c0n73n7fu1', custom_entries=[Cat])

Whenever this Client will attempt to create an Entry with a Content Type that matches the one defined in the class, an instance of the Cat class will be created, and it’s fields will be set accordingly, and can later be easily accessed as instance attributes:

print('Name of the Cat: {0}'.format(cat.name))

If at any point it is desired to fetch only resources of that type, it can be passed to the fetch() method and inferred by the client:

client.fetch(Cat).all() # Fetches all the Cats!

License

Copyright (c) 2015 Contentful GmbH. See LICENSE.txt for further details.

Metadata

Release files for contentful.py 0.9.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for contentful.py 0.9.3
File Size Uploaded Provenance
contentful.py-0.9.3.tar.gz 13.7 kB Without provenance Details

Release files / contentful.py-0.9.3.tar.gz

Download URL contentful.py-0.9.3.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
940c02f2969194cba246d2446d2f70c0a024ae06ad67c4617425f7646232d199
BLAKE2b-256 checksum
How to use checksums
aacb11e621d8b52614b16435f06b10daae2e062d1b438321311fe95f9de56cd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for contentful.py 0.9.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page