Статические файлы Django снова не работают - PullRequest
1 голос
/ 24 мая 2011

Я знаю, что этот вопрос появлялся миллионы раз, также я не новичок в django-кодировщике, но недавно у меня были ужасные проблемы с получением статических файлов в проектах django. В прошлый раз я работал над этим, используя 1.3, но сейчас я работаю над версией 1.2.5, и ни одно из решений не работает.

Так что в основном у меня есть статика, работающая только в админке и больше нигде на сайте. Статические файлы находятся в K:/project/media, я использую window, python 2.7 и django 1.2.5 и сервер разработки.

Настройки:

MEDIA_ROOT = path.join(path.abspath(path.dirname(__file__)), 'media')
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/admin_media/'

URLconf:

urlpatterns += patterns('',
    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': 'K:/project/media/', 'show_indexes': True}
    ),
)

Теперь, когда я открываю http://127.0.0.1:8000/static/ вместо списка статических файлов, я получаю TemplateDoesNotExist at /static/. И импорт в шаблоне возвращает аналогичную ошибку вместо 404: TemplateDoesNotExist at /static/css/global.css/. Что мне здесь не хватает?

EDIT

Полный URL-адрес

from django.conf.urls.defaults import *
from django.views.generic.simple import redirect_to
from p.globals import views
from p.newsevents.feeds import ReleaseFeed
import filebrowser

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

feeds = {
    'releases': ReleaseFeed,
}

urlpatterns = patterns('',

    (r'(?P<reqPath>[\w\-,.]+)$', redirect_to, {'url': '%(reqPath)s/'}),

    (r'^admin/filebrowser/', include('filebrowser.urls')),
    #(r'^admin$', redirect_to, {'url': '/admin/'}),
    (r'^admin/', include(admin.site.urls)),
    (r'^tinymce/', include('tinymce.urls')),
    #(r'^about-us/$', redirect_to, {'url': '/about-us/our-story/'}),
    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),
    (r'^get-your-look/', include('p.getyourlook.urls')),
    (r'^about-us/', include('p.aboutus.urls')),
    (r'^our-services/', include('p.services.urls')),
    (r'^news-events/', include('p.newsevents.urls')),
    (r'^promotions/', include('p.promotions.urls')),
    (r'^careers/', include('p.careers.urls')),
    (r'^locations/', include('p.locations.urls')),

    (r'^$', views.home),
    (r'^(?P<reqPath>[\w\-,.]+)/', views.globals_views),
)

from django.conf import settings

urlpatterns += patterns('',
    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': 'K:/Kuba/Webdesign/hair/media/', 'show_indexes': True}
    ),
)

1 Ответ

1 голос
/ 24 мая 2011

Полагаю, это из-за этого:

 (r'^(?P<reqPath>[\w\-,.]+)/', views.globals_views),

Он перехватит весь запрос на статический и вызовет это представление, что приведет к ошибке TemplateDoesNotExist.Поставьте перед этим статический URL или измените это (и в URL, на которые он ссылается) регулярное выражение.

...