Django管理员用户可以从后端编辑base.html页面吗?

时间:2019-04-03 16:50:15

标签: django jinja2

我想在base.html模板中编辑的背景图片。我当时在考虑使用模型和表格,这样用户/管理员可以将新图像上传到后台。我认为我遇到的问题是直接引用base.html模板,因为它从未被直接调用过。

我当时想只是顺应风格,或者直接编辑CSS也很酷。我只是只能切换不同的CSS预写代码

我尝试过使用base_view(request),但是不起作用 (永远不会调用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 %}

1 个答案:

答案 0 :(得分:0)

您在post中以context的形式传递图像,但是在html中使用了background

尝试:

{% if background %}
      <body style="background:
      url({{ post.image.url }})
      repeat fixed center; 
      margin: 5rem 0 2rem 0;">
{% else %}
      <body style=" margin: 5rem 0 2rem 0;">
{% endif %}