Я работаю над обработкой изображений в 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})
I иметь настройку media root как,
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
также через браузер. Я искал это по net и обнаружил, что доступны некоторые случайные сторонние библиотеки, но они не так стандартны / популярны. Может ли кто-нибудь предложить лучшие практики и библиотеки, чтобы справиться с ситуацией.