Django: подача мультимедийных файлов ADMIN

Я успешно обслуживал мультимедийные файлы для обычных файлов мультимедиа, но при попытке передать мультимедийные файлы администратора произошел сбой. пожалуйста, помогите мне найти проблему, так как я уже несколько часов пытался ее устранить безуспешно (тоже гуглил и читал документ django об обслуживании статических файлов).

Ошибка при попытке доступа к localhost: 8000 / media / a.gif:

Страница не найдена: f: \ python25 \ lib \ site-packages \ django / contrib / admin / media \ a.gif

Я поместил медиа-файлы администратора в каталог с именем «media», а обычные медиа-файлы - в каталог «static». Я тоже на Windows.

Вот как я работаю с обычными медиафайлами в urls.py

# serve static files
from django.conf import settings
if settings.ENVIRONMENT==settings.ENV_DEVELOPMENT:
    urlpatterns += patterns("django.views",
        url(r"%s(?P<path>.*)$" % settings.MEDIA_URL[1:], "static.serve", {"document_root": settings.MEDIA_ROOT,})
    )

И мои settings.py (только важные части):

import project_path
MEDIA_ROOT = project_path.MEDIA.replace('\\','/')
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/media/'
TEMPLATE_DIRS = (
    project_path.TEMPLATE.replace('\\','/'),
)

И мой project_path.py

import sys
from os.path import dirname, join
ROOT = dirname(__file__)
APP = join(ROOT, "apps")
TEMPLATE = join(ROOT, "templates")
MEDIA = join(ROOT, "static")
ADMIN_MEDIA = join(ROOT, "media")

Любые намеки?

или, может быть, хотя бы, пожалуйста, поделитесь, как вы обслуживаете свои административные медиа-файлы (без изменения каких-либо файлов с веб-сервера, но только через исходный код django)

Заранее спасибо :

 vdboor06 апр. 2012 г., 14:05
Причина, по которой настройки URL не работают, заключается в том, чтоdjango/core/management/commands/runserver.py вместе сdjango.core.servers.basehttp настроить обработчик WSGI дляADMIN_MEDIA_PREFIX. Он обрабатывает запрос до нажатия URLconf
 Danielb05 авг. 2009 г., 06:45
Ты когда-нибудь разрешал это? У меня похожий опыт работы на Mac с Django 1.1, обслуживание обычных медиафайлов работает, но не для администратора ...

Ответы на вопрос(7)

(r '^ admin_media /(.*)', 'django.views.static.serve', {'document_root': 'django / contrib / admin / media /', 'show_indexes': True}),

в вашем файле urls.py. И измени свой

ADMIN_MEDIA_PREFIX = '/admin_media/'
 Adrian Liem05 июл. 2009 г., 16:51
спасибо за ответ, но он все еще не работает :) Я набралlocalhost: 8000 / admin_media / a.gif в URL-адресе обозревателя, в результате чего страница не найдена: f: \ python25 \ lib \ site-packages \ django / contrib / admin / media \ a.gif

ADMIN_MEDIA_PREFIX явно задает домен, команда runserver будет предоставлять мультимедийные файлы администратора из contrib.admin.

Я сгорел от этого Магия поведение тоже. Был билет на это Ticket # 8336), но дизайнерское решение состояло в том, чтобы оставить удобство и путаницу как есть.

Для того, чтобы обслуживать ваши админ-медиа (для использования grappelli или любого другого админ-скина, который вы хотите использовать) из ваших каталогов с помощьюrunserver команда, которую вы должны использовать что-то вроде:

MEDIA_ROOT =  os.path.join(PROJECT_ROOT, 'media/')
ADMIN_MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'admin-media/')
MEDIA_URL = '/site-media/'
ADMIN_MEDIA_PREFIX = 'http:/localhost:8000/admin-media/'

Надеюсь, я воскресил здесь правильный вопрос. Заранее извиняюсь.

 orwellian02 нояб. 2009 г., 01:12
спасибо, я тоже обгорел на этом
 Honza Pokorny05 мая 2010 г., 15:30
Отлично. Спасибо за это
 Rich17 сент. 2010 г., 09:18
Магическое удобное поведение. Спасибо, Джанго! Как насчет разумных значений по умолчанию в settings.py? (вздыхает) ... спасибо за это Фоку!
 Sam Stoelinga29 февр. 2012 г., 04:54
Я думаю, что в их решении есть какая-то логика, поскольку, возможно, большинство пользователей не меняются, и уже есть так много настроек, о которых нужно позаботиться. Как новичок, такие удобства приятно иметь.
 vdboor06 апр. 2012 г., 14:06
"Волшебство" - это более умный обходной путь, оно ограничиваетpath.startswith(base_url) регистрироватьсяAdminMediaHandler._should_handle(). Следовательно, вы пропускаете обработчик WSGI и вводите обычный URLconf:)

3, я полагаю) магия ADMIN_MEDIA_PREFIX больше не используется.

В настоящее время runserver предполагает, что ваш STATIC_URL + «admin /». Он тайно и молча перехватывает ваши запросы, игнорирует все ваши urlconf и пытается заставить вас сойти с ума.

 eedeep10 нояб. 2011 г., 04:20
Я обнаружил обратное - с django 1.3, если у меня не было ADMIN_MEDIA_PREFIX = posixpath.join (STATIC_URL, "admin /") (т. Е. Если у меня просто не было ADMIN_MEDIA_PREFIX), тогда runserver не обслуживал мой Администратор СМИ правильно.

n manage.py runserver mydomain.com:8000 --adminmedia = / path / to / your / admin / media /

[1]http: //code.google.com/p/django-grappelli/wiki/Installatio

 Vebjorn Ljosa21 мар. 2011 г., 15:02
Это должно быть специфично для Джанго-Граппелли. С ванильным Django 1.2 я получаюerror: no such option: --adminmedia
 eedeep10 нояб. 2011 г., 04:34
Нет, объяснение есть [здесь] [1]: «Если приложение contrib статических файлов включено (по умолчанию в новых проектах), команда runserver будет переопределена собственной командой runserver, у которой нет опции --adminmedia из-за Устаревшая «. [1]: Docs.djangoproject.com / ен / DEV / исх / Джанго-админ

DIA_PREFIX и MEDIA_URL никогда не должны совпадать, см. Следующее примечание в @ Докумен:

Убедитесь, что используется конечная косая черта, и она должна отличаться от настройки MEDIA_URL (поскольку один и тот же URL-адрес нельзя сопоставить двум разным наборам файлов).

ADMIN_MEDIA_PREFIX = '/static/media/'

Это предполагает, что в каталоге MEDIA_ROOT / media / находится папка мультимедиа администратора (что я понял из вашего вопроса).

 Adrian Liem05 июл. 2009 г., 16:51
спасибо за ответ, но он все еще не работает :) Я набралlocalhost: 8000 / статический / СМИ / a.gif в URL-адресе обозревателя, в результате чего страница не найдена: f: \ python25 \ lib \ site-packages \ django / contrib / admin / media \ a.gif
 Adrian Liem05 июл. 2009 г., 16:53
Я думаю, что я попробую воссоздать проект с нуля, используя обычные примеры администрирования СМИ :) спасибо за ответы

Попробуйте использовать STATICFILES_DIRS в качестве удара

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    ("images", os.path.join(STATIC_ROOT,'images').replace('\\','/')),
    ("css",    os.path.join(STATIC_ROOT,'css').replace('\\','/')),
    ("js",     os.path.join(STATIC_ROOT,'js').replace('\\','/')),
)

Удачи

 HUHU10 нояб. 2011 г., 09:16
STATICFILES_DIRS = (("media", os.path.join (STATIC_ROOT, 'media'). Replace ('\\', '/')),)

Ваш ответ на вопрос