Django template tag for json-ld
Project description
django-json-ld
This is a django template tag to help developers render structured data tags inside their django templates.
Installation
Install using pip
:
pip install django-json-ld
Add django_json_ld
to INSTALLED_APPS
in settings.py
:
INSTALLED_APPS = [
# Other apps...
'django_json_ld',
]
Settings
You can override the following options in settings.py:
JSON_LD_CONTEXT_ATTRIBUTE
: the context attribute name used in django_json_ld
's Class-Based Views (CBV). Defaults to 'sd'
.
JSON_LD_MODEL_ATTRIBUTE
: the model attribute name used by JsonLdDetailView
to get the model's structured data. Defaults to 'sd'
.
JSON_LD_DEFAULT_CONTEXT
: default json-ld context when using django_json_ld
's CBVs. Defaults to 'https://schema.org'
.
JSON_LD_DEFAULT_TYPE
: default json-ld type when using django_json_ld
's CBVs. Defaults to 'Thing'
.
JSON_LD_GENERATE_URL
: generate json-ld's url
field when using django_json_ld
's CBVs. Defaults to True
.
Usage Example
Assuming you have a structured data sd
like the following in your context (copied from the link above).
sd = {
"@context": "https://schema.org",
"@type": "Organization",
"url": "http://www.example.com",
"name": "Unlimited Ball Bearings Corp.",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-401-555-1212",
"contactType": "Customer service"
}
}
Then, in your template:
{% load render_json_ld from django_json_ld %}
{% render_json_ld sd %}
Would render into:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"url": "http://www.example.com",
"name": "Unlimited Ball Bearings Corp.",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-401-555-1212",
"contactType": "Customer service"
}
}
</script>
Class-Based View example
views.py
from django_json_ld.views import JsonLdDetailView
class ProductDetailView(JsonLdDetailView):
model=Product
models.py
class Product(models.Model):
name = models.CharField(_('Name'), max_length=255)
description = models.TextField(_('Description'))
@property
def sd(self):
return {
"@type": 'Product',
"description": self.description,
"name": self.name,
}
By using {% render_json_ld sd %}
, as explained in the previous example, would render into something like:
{
"@context":"https://schema.org",
"@type":"Product",
"name":"The Product",
"description":"A great product.",
"url":"http://example.org/products/1/the-product/"
}
In the above example JsonLdDetailView
adds sd
to ProductDetailView
's context, using Product
's own sd
property. The url
is generated automatically by JsonLdDetailView
. This behaviour is configurable through settings.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_json_ld-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9cd01de353c0f2941b2bcbfe6ec998979695662d92fad667b764d51547bf6cdf |
|
MD5 | de4514915cc1c0829f00627353561d41 |
|
BLAKE2b-256 | 15613c32c8593ce0dcc540a8f3aa8a5365c95072c2e8108088a9c8570d68068d |