У меня есть следующий Джанго модель с ImageField:Создание представления для Django ImageFields
class Pics(models.Model):
def file_path(instance, filename):
return '/'.join([instance.user.username, 'pics', filename])
#...
file = models.ImageField(upload_to=file_path)
Я знаю, что я могу назвать pic.file.url, чтобы получить URL к изображению. однако, мне интересно, использует ли Django некоторые функции для автоматического размещения этого изображения?
Код я в настоящее время работает нормально, но это кажется излишним:
#urls.py
urlpatterns += patterns('views',
url(r'media/(?P<name>\w{1,30})/pics/(?P<file>[^\\/:*?\"<>|]+)$', 'show_pic'),)
, то на мой взгляд:
#app.views
import mimetypes
def show_pic(request, name, file):
path = u'media/%s/graphics/%s' % (name, file)
mime = mimetypes.guess_type(name)[0]
image_data = open(path, 'rb').read()
return HttpResponse(image_data, mimetype=mime)
Почему вы хотите использовать медиафайлы через Django? Это должно быть сделано веб-сервером. Поэтому, если вы просто ставите/загружаете файлы в путь, который веб-сервер поставляет, нет необходимости в представлении для просмотра изображений. – Jingo