Vic*_*tor 4 html python django
我正在尝试制作一个画廊网站,但我似乎无法检索要在 html 中显示的图像。我正在尝试根据filter_type
具有图像价值的数据库检索图像。
到目前为止我有这个:
在views.py
def gallery(request):
img = Upload.objects.filter(file_type='image')
return render(request,'gallery.html',{"img":img})
Run Code Online (Sandbox Code Playgroud)
并在html
:
{% for n in img %}
<img src="{{ n.img}}" />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我models.py
的如下:
class Upload(models.Model):
image = models.ImageField(upload_to='media/image',default='')
text_field = models.CharField(max_length=200,default='')
date_added = models.DateTimeField(auto_now_add=False,auto_now=True)
file_type = models.CharField(max_length=256, choices=[('image', 'image'), ('video', 'video'), ('other', 'other')])
class Meta:
verbose_name_plural = "Files Manager"
Run Code Online (Sandbox Code Playgroud)
我还设置了MEDIA_URL
和MEDIA_ROOT
。我可以从管理员上传图像,它们没问题。
我的MEDIA_URL
:
MEDIA_ROOT = os.path.join(BASE_DIR,'static','media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
当我查看 html 时,src
路径为空。
问题解决了。
图像未显示在我的 html 中的主要原因是路径错误。我应该从我的 media_url + 文件名中获取它,因为没有添加 media_url,所以没有正确显示的路径。正确的做法是:
对于VIEWS.py :
def gallery(request):
img = Upload.objects.filter(file_type='image')
return render(request,'gallery.html',{"img":img, 'media_url':settings.MEDIA_URL})
Run Code Online (Sandbox Code Playgroud)
和对于html
:
{% for i in img %}
<img src="{{media_url}}{{ i.image }}">
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
希望这能回答某人的问题,或者如果不能至少我现在可以继续。:)感谢大家的支持。