flatpage django アプリを拡張して、いくつかのブートストラップ カルーセル機能を含めようとしています。この時点で、「carousel」という新しい django アプリを作成し、model.py 内で、カルーセル画像をアップロードする ImageField と FlatPage の ForeignKey を持つ「CarouselImage」というモデル クラスを定義します。
model.py
from django.contrib.flatpages.models import FlatPage
class CarouselImage(models.Model):
image = models.ImageField(upload_to='carousel/')
page = models.ForeignKey(FlatPage)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
active = models.BooleanField(default=True)
def __str__(self):
return str(self.image)
carousel/admin.py では、この画像1でわかるように、問題はありません。
admin.py
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
from .models import CarouselImage
class CarouselInline(admin.TabularInline):
model = CarouselImage
extra = 1
allow_add = True
class FlatPageAdminWithCarousel(FlatPageAdmin):
inlines = [CarouselInline]
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdminWithCarousel)
問題
結局のところ、私が知る必要があるのは、この画像をテンプレートに渡す方法です。. 問題は、FlatPage には既にビューがあるため、それらの画像をテンプレートに渡すためのビューを作成できないことです。ビューを拡張して別のコンテキストを含める方法があるかどうかはわかりません。
1 つの Stackoverflow QA が templatetags の作成を指摘したので、いくつかのテンプレート タグを作成しようとしましたが、それらの画像をコンテキストとしてテンプレートに渡すことができない場合、templatetags は機能しません。
templatetags/add_carousel.py
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def carousel(context):
image = context['image']
return str(image)
あなたが与えることができるすべての助けに感謝します,
イヴァン