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

Python Django:如何通过管理员上传、显示和删除图像,python,django,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'), )

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

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
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>

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

答案如下:

我不知道怎么写这个

我们怎么知道您想要哪一个BxSlider记录?但是如果你想说最后一次修改的在线版本:

     addr = models.BxSlider.objects.filter(status=1).order_by("-last_modified").first()
所有这些ORM查询内容都记录在这里:

我不知道怎么写,所以我可以打电话给管理员

你不需要“从管理员那里调用图片”(这没有意义),而是从你的模型中获取图片。但无论如何,这里的答案是:

上传文件的相对URL可以使用URL属性获得

所以你想要,非常简单:

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

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

1) 您可以使用默认的django管理仪表板。您不必为此编写代码。它只是作为django的默认版本提供的

  • 访问development server的管理仪表板(如果需要,使用您的主机地址更改localhost)
  • createsuperuser访问django管理仪表板
2) 注册您想要上传、删除和更新图片的型号@admin.py

您可以在下面的链接中阅读有关默认管理仪表板的更多信息:


希望能有所帮助。

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

设置:

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'),
)
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
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 %}

{img_addr%中的i的%
{%endfor%}

你到底想实现什么?不相关,但你不应该将上传的内容放在你的静态目录中-静态和媒体有不同设置是有充分理由的。哇!非常感谢你我可以从你的答案中学到很多东西