Не удается загрузить статический контент в Django - PullRequest
0 голосов
/ 11 октября 2011

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

Мои статические файлы находятся в: '/ home / me / django_projects / myproject / site_media'. Под здесь есть каталоги: 'images' и 'css'

Я получаю 404 ошибки на все статическое. Даже если я попытаюсь вытащить файл прямо из: http://localhost:8000/site_media/images/test_image.jpg

Вот HTML-код, который я должен вызывать статический контент:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Django Test </title>
<link href="{{ STATIC_URL }}/css/style.css" rel="stylesheet" type="text/css"   media="screen" />
</head>
<body>
   This is my body...   blah blah blah
   <p>Here is an image:  <img src="{{ MEDIA_URL }}images/media.jpg" alt="Foobar" />
</body>

Ниже приведены мои файлы настроек. Я пробовал каждую комбинацию медиа и статической конфигурации, которую я могу придумать. Кто-нибудь видит, что я здесь делаю не так?

Файл: settings.py

# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = '/home/me/django_projects/myproject/site_media/'
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    "/home/me/django_projects/myproject/static",  
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

#...
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'jim',
)

Файл: urls.py

urlpatterns = patterns('',
    (r'^customers/$', 'jim.views.index'),
    (r'^customers/(?P<customer_id>\d+)/$', 'jim.views.detail'),
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/media'}),
    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/media'}),
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
)   

Кто-нибудь видит, что здесь не так?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Если я посмотрю на ваш конфиг, я ожидаю, что файл:

http://localhost:8000/media/images/test_image.jpg

Но, пожалуйста, прочитайте django документацию по статическим и медиа. Медиа предназначена для использования загруженного контента, статическая - для контента сайта, такого как css / images.

0 голосов
/ 11 октября 2011

Похоже, у вас может быть две косые черты:

STATIC_URL = '/static/'
"{{ STATIC_URL }}/css/style.css"

даст вам

"/static//css/style.css"

посмотреть исходный код страницы в браузере и посмотреть, как пишется URL

...