我试图找到一个结合了schema.org/Product定义和一些自定义元素的好json-ld。
我来自xsd背景,json-ld中的可扩展性似乎很难实现。
我从Google(https://developers.google.com/search/docs/guides/search-gallery)上找到的产品的模板标记开始,并尝试扩展它(我想添加类似mydomain:tags的内容),但我不知道如何做这个。
<script type="application/ld+json">
{
"@context": ["http://schema.org/",
{"mydomain": "http://mystuff.com/"}],
"@type": "Product",
"name": "Executive Anvil",
"image": "http://www.example.com/anvil_executive.jpg",
"description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.",
"mpn": "925872",
"brand": {
"@type": "Thing",
"name": "ACME"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.4",
"reviewCount": "89"
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "119.99",
"priceValidUntil": "2020-11-05",
"itemCondition": "http://schema.org/UsedCondition",
"availability": "http://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Executive Objects"
}
},
"mydomain:tags" : {}
}
</script>
任何关于我在这里做错的线索都会非常感激。 这可能是愚蠢的......
答案 0 :(得分:1)
您的JSON-LD似乎是正确的。您使用的是example 19 (Compact IRIs)和example 29 (Advanced Context Usage)的组合。
Google的结构化数据测试工具不是一般的JSON-LD验证工具。它报告的错误主要是针对其搜索结果功能。他们的错误(“属性http://mystuff.com/tags
无法被Google识别为Product
类型的对象。”)只是说它不是Google知道的属性之一,当然,这是正确的。< / p>
如果您要验证JSON-LD,而不会收到特定于Google的功能的错误,则可以使用http://json-ld.org/playground/,例如。
答案 1 :(得分:0)
如果要在Django中将JsonLd用于ListView和DetailView,则不需要为从管理端添加的所有列表项编写JsonLd,只需在List View类中传递JsonLdListView并在DetailView中传递JsonLdDetailView类和模型中的一个函数
第1步 在models.py中,在已为其创建ListView和DetailView的模型中编写此函数
@property
def sd(self):
return {
"@type": 'Organization',
"description": self.description,
"name": self.name,
}
*名称和描述是同一模型的字段名称
from django_json_ld.views import JsonLdDetailView, JsonLdListView
第2步
class PortfolioListView(JsonLdListView, ListView):
pass
第3步
class PortfolioDetailView(JsonLdDetailView, DetailView):
def get_structured_data(self):
sd = super(DesignzPortfolioDetailView,
self).get_structured_data()
return sd