我正在尝试扩展平面 django 应用程序以包含一些引导轮播功能。在这一点上,我创建了一个名为“carousel”的新 django 应用程序,在 model.py 中我定义了一个名为“CarouselImage”的模型类,它有一个用于上传轮播图像的 ImageField 和一个用于 FlatPage 的 ForeignKey。
模型.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。
管理员.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 已经有一个视图,所以我无法创建一个视图来将这些图像传递给模板。我不知道是否有办法扩展视图以包含另一个上下文。
一位 Stackoverflow QA 指出了模板标签的创建,所以我尝试创建一些模板标签,但如果我不能将这些图像作为上下文传递给模板,那么模板标签将不起作用。
模板标签/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)
感谢您提供的所有帮助,
伊万