【发布时间】:2020-08-08 14:56:50
【问题描述】:
我在 Django 中以表单形式接受来自用户的图像。如何访问上传的图片以在网络浏览器中显示?
这就是我在 settings.py 中的内容
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
这是在我的models.py中
class Hotel(models.Model):
name = models.CharField(max_length=50)
image = models.ImageField(upload_to="images/")
另外,我添加了
if settings.DEBUG:
urlpatterns +=static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
在 urls.py 中
我试图以
的身份访问图像def image_view(request):
if request.method=='POST':
farm = hotelForm();
form = hotelForm(request.POST,request.FILES)
if form.is_valid():
form.save()
modelff = Hotel(name=request.POST['name'],image = request.FILES['image'])
# print(modelff.image.url)
return render(request,'djangoform.html',{"form":farm,"uploaded_data_url":modelff.image.url})
else:
form = hotelForm()
return render(request,'djangoform.html',{"form":form})
在我的模板中,我以<img src="{{uploaded_data_url}}"> 访问了图像。但是图像没有显示,控制台显示找不到图像。
附:我见过How to access media files in djangoHow to access uploaded files in Django?
https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user-during-development
Django : accessing uploaded picture from ImageField
但他们似乎都没有帮助我。我找不到如何在我的路径中包含'images/'。我的uploaded_data_url 显示/media/Screenshot%202020-04-18%20at%206.39.24%20PM.png 而我希望它显示/media/images/Screenshot%202020-04-18%20at%206.39.24%20PM.png
问题出在哪里?
另外,如果有类似于How can I get uploaded text file in view through Django? (f.read() in this question) 的东西,那就太好了。
编辑:由于从答案来看,问题似乎并不清楚,我想澄清一下,以上只是我尝试过的,我真的不知道它是否正确。其次,这样做的全部目的是从用户那里获取图像,对其进行处理,并将原始图像和最终图像显示给用户。因此,如果您有任何其他方法可以做到这一点,请分享。
【问题讨论】: