我正在 Django 的表单中接受来自用户的图像。如何访问上传的图像以在 Web 浏览器中显示它?
这是我在 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 django How 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
) 会很棒。
编辑:从一个答案来看,问题似乎并不清楚,我想澄清一下,以上只是我尝试过的,我真的不知道它是否正确。其次,这样做的全部目的是从用户那里获取图像,对其进行处理,并将原始和最终图像显示给用户。因此,如果您必须使用任何其他方法来执行此操作,请分享。
最佳答案
如果 uploaded_data_url 显示此 /media/Screenshot%202020-04-18%20at%206.39.24%20PM.png
那么这意味着图像保存在 media
目录。这是预期的,因为您的 conf 是 MEDIA_URL = '/media/'
。
如果你想要它作为 /media/images/Screenshot%202020-04-18%20at%206.39.24%20PM.png
然后更改为这个 MEDIA_URL = '/media/图片/'
.
上面的问题是它会干扰所有其他媒体文件,所以一个更简单的解决方案是将 /media/
替换为 /media/images/
.
在您的 views.py
中对此进行调整
url = str(modelff.image.url)
modUrl = url.replace("/media/","/media/images/")
return render(request,'djangoform.html',{"form":farm,"uploaded_data_url":modUrl l})
https://stackoverflow.com/questions/61418471/
相关文章:
python-3.x - 从 Python 中的多个文件夹读取多个 CSV 文件?
visual-studio-code - 在 vscode 的集成终端中运行命令后如何获取退出代码
python - Django ValueError : The view usermanager.
ios - 在 iPhone/iOS 的浏览器上录制视频 (MediaRecorder)
c# - udpclient 仅在本地接收广播(c#、Unity)
java - 节俭的Java : Cannot use reserved language keyw
c# - 使用 Razor 页面时在 ASP .NET 3.1 核心 Controller 中处理异