LINUX.ORG.RU

Django и отображение картинок...


0

0

При изучения Джанги у меня возникла некоторая проблема: никак не пойму, как отрисовать картинку. Как сделать такое представление, что выведет мне одну простую картинку, сформировав на неё URL. Просто вставить в HTML прямо в PY-коде.

Как такое сделать?



Последнее исправление: Yak (всего исправлений: 1)

Картинки надо статично отдавать, силами вебсервера. Если надо ограничивать доступ, то можно, например, взять mod_secdownload у lighttpd.

Если же нужно вывести именно силами джанги, то оно будет неидеально по производительности. Делается просто: читается файл на диске (open, read), далее его содержимое выдаётся в response (в примерах есть pdf, тут только mime-тип поменять). Но, повторюсь, лучше так не делать.

anonymous
()

Почитал свою книжку на русском? Говорили тебе учи английский, сейчас бы таких идиотских вопросов не задавал.

anonymous
()

просто забей на джангу

redixin ★★★★
()

Ещё одна проблема: у меня хорошо создаётся админка, всё работает за одним исключением: загрузка картинок работает, картинка выкладывается в уготованную ей директорию, но когда я пытаюсь просмотреть загруженную картинку в админке, то сервер пишет «page not found» Как сделать правильно? Можете дать простой пример с простой моделькой об одном поле с картинкой?

Settings.py

[code]# -*- coding: utf-8 -*- # Django settings for megaproject project.

DEBUG = True TEMPLATE_DEBUG = DEBUG

ADMINS = ( # ('Your Name', 'your_email@domain.com'), )

MANAGERS = ADMINS

DATABASE_ENGINE = 'postgresql_psycopg2' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'BlogBase' # Or path to database file if using sqlite3. DATABASE_USER = 'user' # Not used with sqlite3. DATABASE_PASSWORD = 'qweasdzxc' # Not used with sqlite3. DATABASE_HOST = " # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = " # Set to empty string for default. Not used with sqlite3.

# Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'America/Chicago'

# Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'en-us'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = True

# Absolute path to the directory that holds media. # Example: «/home/media/media.lawrence.com/» MEDIA_ROOT = 'C:/Documents and Settings/user/workspace/megaproject/src/megaproject/media/'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). # Examples: "http://media.lawrence.com", "http://example.com/media/" MEDIA_URL = 'http://localhost:8000/media/images/'

# URL prefix for admin media — CSS, JavaScript and images. Make sure to use a # trailing slash. # Examples: "http://foo.com/media/", «/media/». ADMIN_MEDIA_PREFIX = '/media/'

# Make this unique, and don't share it with anybody. SECRET_KEY = '8fm06+zo3p9$ax^qcod$%t%)t&y*rj3(wh8dgyg0xy86%b22^v'

# List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source', # 'django.template.loaders.eggs.load_template_source', )

MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', )

ROOT_URLCONF = 'megaproject.urls'

TEMPLATE_DIRS = ('megaproject/src/megaproject/templates', # Put strings here, like «/home/html/django_templates» or «C:/www/django/templates». # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. )

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.admindocs', 'megaproject', 'megaproject.books', )

[/code]

Yak
() автор топика
Ответ на: комментарий от Yak

>MEDIA_ROOT = 'C:/Documents and Settings/user/workspace/megaproject/src/megaproject/media/'

На винфак.

Ещё одна проблема: у меня хорошо создаётся админка, всё работает за одним исключением: загрузка картинок работает, картинка выкладывается в уготованную ей директорию, но когда я пытаюсь просмотреть загруженную картинку в админке, то сервер пишет «page not found» Как сделать правильно? Можете дать простой пример с простой моделькой об одном поле с картинкой?

Если картинка в директории, а в ответ выдаётся 404, то смотреть надо в сторону вебсервера. Повторюсь, джанго _НЕ_ занимается отдачей статики. И модельки тут непричём.

anonymous
()
Ответ на: комментарий от Yak

если пользуешь внешний веб-сервер — таки заставь его отобразить папку, которая в settings.py называется MEDIA_PREFIX (кстати, где она?)

если пользуешь встроенный веб сервер — смотри раздел «serving static files» джангодоков, и укажи таки MEDIA_PREFIX в settings.py

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.