在wagtail上创建片段图像以供社交媒体共享。
wagtail-snippet-image的Python项目详细描述
用于创建片段图像以便在社交网络等中共享的包。 基于django-snippet-image和snippet-image。 但对于图像的存储,使用wagtailImages。
安装
pip3安装wagtail片段图像
如何使用
fromdjango.db.modelsimport(CharField,ForeignKey,SET_NULL,CASCADE,)fromwagtail_snippet_imageimportSnippetImageFieldfromwagtail.core.modelsimportPagefromwagtail.admin.edit_handlersimportFieldPanelfromwagtail.images.edit_handlersimportImageChooserPanelfrommodelcluster.fieldsimportParentalKeyfrommodelcluster.contrib.taggitimportClusterTaggableManagerfromtaggit.modelsimportTaggedItemBaseclassPageTag(TaggedItemBase):content_object=ParentalKey('home.HomePage',on_delete=CASCADE,related_name='tagged_items',)classStatuses:DRAFT='draft'PUBLISH='publish'CHOICES=((DRAFT,'Draft'),(PUBLISH,'Publish'),)classHomePage(Page):background=ForeignKey('wagtailimages.Image',verbose_name='Изображение для обложки',related_name='cover_images',on_delete=SET_NULL,blank=True,null=True,)snippet_image_field=SnippetImageField(verbose_name='Example snippet image field',null=True,)status=CharField(max_length=20,choices=Statuses.CHOICES,default=Statuses.DRAFT,)tags=ClusterTaggableManager(through=PageTag,blank=True)content_panels=Page.content_panels+[ImageChooserPanel('background'),ImageChooserPanel('snippet_image_field'),FieldPanel('status'),FieldPanel('tags'),]defget_snippet_image_background(self,snippet_type):returnself.backgroundandself.background.fileandself.background.file.path \ ifsnippet_type=='default'elseNonedefget_snippet_image_center(self,snippet_type):return(self.background.focal_point_x,self.background.focal_point_y) \ ifsnippet_type=='default'andself.background \ andself.background.focal_point_xandself.background.focal_point_y \ elseNonedefget_snippet_image_text(self,snippet_type):returnself.titleifsnippet_type=='default'elseNonedefsnippet_image_should_be_created(self):returnself.status==Statuses.PUBLISH# Wagtail custom methods for create wagtail images for sharing snippet imagedefget_snippet_image_title(self,snippet_type):returnself.titleifsnippet_type=='default'elseNonedefget_snippet_image_tags(self,snippet_type):returnself.tags.names()ifsnippet_type=='default'elseNone
并在模板中使用:
<metaproperty="og:image"content="{{ image(page.snippet_image_field, 'original') }}"/>
在home中阅读更多内容。