【发布时间】:2020-10-31 21:01:15
【问题描述】:
我正在 Django 中处理图像。我正在使用普通的图像模型存储方法。
所以,我的模型是这样的,
class PictureModel(models.Model):
def user_directory_path(instance, filename):
return 'images/{0}/{1}'.format(instance.user.username, filename)
user = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(upload_to=user_directory_path)
view.py 有点像,
@login_required(login_url='/accounts/login/')
def myMethod(request):
user = request.user
myImage = PictureModel.objects.get(user=request.user)
return render(request, 'main/myPage.html', {'myImage': myImage})
我有一个媒体根设置,
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
url.py设置如下,
url(r'^static/(?P<path>.*)$', django.views.static.serve, {'document_root': settings.STATIC_ROOT, 'show_indexes': settings.DEBUG})
现在在正常流程中,图片上传和提取工作正常。但问题在于获取媒体文件时的用户验证/身份验证。
假设,我通过 URL 获取图像,
media/images/user_1/mypic.jpg
但是整个媒体文件夹在没有任何验证的情况下就暴露了,我可以访问,
media/images/user_2/mypic.jpg
也通过浏览器。我在网上对此进行了搜索,发现有一些随机的第三方库可用,但它们并不那么标准/流行。谁能建议处理这种情况的最佳实践和库。
【问题讨论】:
-
您找到解决方案了吗?在这里面临类似的问题。
标签: python python-3.x django django-models file-upload