Django: статические файлы - PullRequest
0 голосов
/ 23 марта 2012

Когда я пытаюсь показывать изображения из моего блога, шаблон просматривает

[26/Mar/2012 10:33:42] "GET /blog/images/coke.jpg HTTP/1.1" 200 6153

Однако, когда я загружаю изображения с плоской страницы, шаблон выглядит как

[26 марта 2012 г. 10:33:42] "GET /blog/images/coke.jpg HTTP / 1.1" 200 6153

Я думаю, это потому, что мне нужно добавить что-то в мой файл urls.py с моим приложением для блога, чтобы он знал, какой у меня статический URL, а не просматривал папку blog / images.

Я использую тэг:

src="{{ STATIC_URL }}images/header.png"

Мой файл settings.py имеет:

STATIC_ROOT = '/export/mailgrp4_a/sc10jbr/WWWdev/dbe/djangostatic/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/export/mailgrp4_a/sc10jbr/WWWdev/dbe/static/',

В моем блоге url.py есть:

urlpatterns = patterns('dbe.blog.views',
(r"^(\d+)/$", "post"),
(r"^add_comment/(\d+)/$", "add_comment"),
(r"^delete_comment/(\d+)/$", "delete_comment"),
(r"^delete_comment/(\d+)/(\d+)/$", "delete_comment"),
(r"^month/(\d+)/(\d+)/$", "month"),
(r"", "main"),
)

У моего основного url.py есть:

urlpatterns = patterns('',
url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)

Что мне нужно добавить?

Мой обновленный блог url.py содержит:

from django.conf.urls.defaults import *
from dbe.blog.models import *
from django.contrib.staticfiles.urls import staticfiles_urlpatterns


urlpatterns = patterns('dbe.blog.views',
(r"^(\d+)/$", "post"),
(r"^add_comment/(\d+)/$", "add_comment"),
(r"^delete_comment/(\d+)/$", "delete_comment"),
(r"^delete_comment/(\d+)/(\d+)/$", "delete_comment"),
(r"^month/(\d+)/(\d+)/$", "month"),
(r"", "main"),
)

urlpatterns += staticfiles_urlpatterns()

Мой обновленный main url.py имеет:

from django.conf.urls.defaults import *
from dbe.blog.models import *
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
url(r'^blog/', include('blog.urls')),

# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),

)

urlpatterns += staticfiles_urlpatterns()

Может ли кто-нибудь еще помочь с этим, я действительно застрял даже после следования помощи ниже. Что-нибудь, что я могу использовать, чтобы помочь отладить и диагностировать проблему?

спасибо

Ответы [ 3 ]

2 голосов
/ 19 октября 2012

Пока вы разрабатываете, вы можете добавить это в urls.py. По завершении вы должны настроить веб-сервер для обслуживания статических файлов.

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
         url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.STATIC_ROOT,
        }),
   )
0 голосов
/ 23 марта 2012

Единственный способ, которым изображение будет запрашиваться при /blog/images/header.png, - это если {{ STATIC_URL }} оценивается как пустая строка.Единственный способ, который может произойти, - это если он не установлен в контексте, и единственный способ, который случится, - это если у вас нет обработчика контекста шаблона staticfiles:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.static',
)
0 голосов
/ 23 марта 2012

кажется, что вы упускаете следующие вещи:

settings.py (возможно, syncdb необходимо)

INSTALLED_APPS = (
...
"django.contrib.staticfiles",
...
)

TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
...
)

main urls.py:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

запустите collectstatic команду

также есть страница документации со всеми подробностями:

https://docs.djangoproject.com/en/1.3/howto/static-files/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...