Я бы хотел отредактировать фоновое изображение в шаблоне base.html. Я думал о модели и форме, чтобы пользователь / администратор мог просто загрузить новые изображения на задний план. Я думаю, что проблема в том, что я обращаюсь непосредственно к шаблону base.html, поскольку он никогда не вызывается напрямую.
Я думал о том, чтобы просто вставить стиль в строку или редактировать CSS напрямую, тоже было бы круто. Я только смог переключать разные CSS-коды
Я пробовал использовать base_view (запрос), но не работает
(base.html никогда не вызывается, поэтому я предполагаю, что именно поэтому и очевидно, что расширенные страницы не изменяют base.html)
def base_view(request):
context = {
'post': BackgroundImage.objects.last()
}
return render(request, 'base.html', context)
Итак, вот что у меня есть:
models.py:
class BackgroundImageModel(models.Model):
image = models.ImageField(default="default.jpg", upload_to='background_pics')
author = models.ForeignKey(User, on_delete=models.CASCADE)
def save(self):
super().save()
img = Image.open(self.image.path)
if img.height > 2000 or img.width > 2000:
output_size = (2000, 2000)
img.thumbnail(output_size)
img.save(self.image.path)
views.py:
class BackgroundImage(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = BackgroundImageModel
fields = ['image']
base.html:
{% if background %}
<body style="background:
url({{ background.image.url }})
repeat fixed center;
margin: 5rem 0 2rem 0;">
{% else %}
<body style=" margin: 5rem 0 2rem 0;">
{% endif %}