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管理仪表板
希望能有所帮助。谢谢大家!我已经解决了这个问题,下面是我的答案: 设置:
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%}
你到底想实现什么?不相关,但你不应该将上传的内容放在你的静态目录中-静态和媒体有不同设置是有充分理由的。哇!非常感谢你我可以从你的答案中学到很多东西