Django:如何通过管理员上传,显示,删除图像

时间:2018-08-23 10:27:40

标签: python django

我想在前端显示一些图片,但是我想由管理员上传,删除和更新图片,而不是在前端编写代码。我已经完成了一些代码。我不知道下一步该怎么做。 我的设置代码:

MEDIA_ROOT = os.path.join(BASE_DIR,'static/images/bxslider/')
MEDIA_URL = '/images/bxslider/'

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)

型号:

class BxSlider(models.Model):
    status_choice = (
        (0,'online'),
        (1,'offline'),
    )
    status = models.IntegerField(choices=status_choice,default=1)
    name = models.CharField(max_length=32)
    img = models.ImageField(upload_to='')
    herf = models.CharField(max_length=256)
    create_date = models.DateTimeField(auto_now_add=True,editable=True)
    update_date = models.DateTimeField(auto_now=True,null=True)

    class Meta: 
        db_table = 'BxSlider'  
        verbose_name_plural = 'index slider'  

    def __str__(self):
        return self.name

观看次数:

def index(request):
    #addr = models.BxSlider.objects.get()  #I don't know how to write this
    return render(request,'index.html',{"addr":addr})

index.html:

<div class="bxslider">
<div><img src="" style="width:100%;"></div> <!-- I don't know how to write,so I can call pictures from admin -->
</div>

3 个答案:

答案 0 :(得分:0)

  

我想由管理员上传,删除和更新图片,而不是在前端编写代码

答案在这里:https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#modeladmin-objects

  

我不知道怎么写

def index(request):
    #addr = models.BxSlider.objects.get()  # I don't know how to write this

我们怎么会我们知道您想要哪个BxSlider记录?但是,如果您想说一下在线内容的最后修改:

     addr = models.BxSlider.objects.filter(status=1).order_by("-last_modified").first()

所有这些ORM查询内容都记录在这里:https://docs.djangoproject.com/en/2.1/topics/db/queries/

  

我不知道怎么写,所以我可以从管理员那里打电话给图片

您不会“从管理员那里调用图片”(这没有意义),而是从模型中获取图片。但是无论如何,答案还是in the documentation

  

可以使用url属性获取上载文件的相对URL

很简单,所以您想要:

<div class="bxslider">
  <img src="{{ addr.img.url }}">
</div>

答案 1 :(得分:0)

  

我想由管理员上传,删除和更新图片,而不是在前端编写代码。

1)您可以使用默认的django管理控制台。您不必为此编写代码。它只是django的默认发货。

  • 访问开发服务器的管理控制台http://localhost:8000/admin/(如果需要,请使用主机地址更改localhost)。
  • createsuperuser访问您的django管理控制台

2)注册您要上传,删除和更新图片的模型@ admin.py。

您可以在以下链接中了解有关默认管理控制台的更多信息:

https://first-django-admin.readthedocs.io/en/latest/

希望有帮助。

答案 2 :(得分:0)

谢谢大家!我已经解决了这个问题,这是我的答案:

设置:

MEDIA_ROOT = os.path.join(BASE_DIR,'medias/bxslider/')
MEDIA_URL = '/medias/'

型号:

class BxSlider(models.Model):
    status_choice = (
        (0,'online'),
        (1,'offline'),
    )
    status = models.IntegerField(choices=status_choice,default=1)
    name = models.CharField(max_length=32)
    img = models.ImageField(upload_to='')
    herf = models.CharField(max_length=256)
    create_date = models.DateTimeField(auto_now_add=True,editable=True)
    update_date = models.DateTimeField(auto_now=True,null=True)

    class Meta: 
        db_table = 'BxSlider'  
        verbose_name_plural = 'index slider'  

    def __str__(self): 
        return self.name

index.html

<div class="bxslider">
{% for i in img_addr %}
    <div><a href="{{ i.herf }}"><img src="/medias/{{ i.img }}"  style="width:100%;"></a></div>
{% endfor %}