Как решить ошибку «Пустой статический префикс не разрешен» в Django?

Вопрос: Я установил Django 1.5.1 с MySQL и mod_wsgi на ubuntu. После того как я импортировал свой проект с локальной машины на сервер, я получаю эту ошибку, посещая все URL-адреса: **ImproperlyConfigured at /** Empty static prefix not permitted Request Method: GET Request URL: Django Version: 1.5.1 Exception Type: ImproperlyConfigured Exception Value: Empty static prefix

Вопрос:

Я установил Django 1.5.1 с MySQL и mod_wsgi на ubuntu. После того как я импортировал свой проект с локальной машины на сервер, я получаю эту ошибку, посещая все URL-адреса:

**ImproperlyConfigured at /** Empty static prefix not permitted Request Method: GET Request URL: Django Version: 1.5.1 Exception Type: ImproperlyConfigured Exception Value: Empty static prefix not permitted Exception Location: /srv/projects/venv/lib/python2.7/site-packages/django/conf/urls/static.py in static, line 22 Python Executable: /usr/bin/python Python Version: 2.7.3 Python Path: [‘/srv/projects/app/danial’, ‘/srv/projects/app’, ‘/srv/projects/venv/lib/python2.7/site-packages’, ‘/srv/projects/venv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg’, ‘/srv/projects/venv/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg’, ‘/srv/projects/venv/lib/python2.7/site-packages’, ‘/srv/projects/venv/lib/python2.7/site-packages/PIL’, ‘/usr/local/lib/python2.7/dist-packages/virtualenv-1.9.1-py2.7.egg’, ‘/usr/local/lib/python2.7/dist-packages/virtualenvwrapper-4.0-py2.7.egg’, ‘/usr/local/lib/python2.7/dist-packages/stevedore-0.8-py2.7.egg’, ‘/usr/local/lib/python2.7/dist-packages/virtualenv_clone-0.2.4-py2.7.egg’, ‘/usr/local/lib/python2.7/dist-packages/pip-1.3.1-py2.7.egg’, ‘/usr/lib/python2.7’, ‘/usr/lib/python2.7/plat-linux2’, ‘/usr/lib/python2.7/lib-tk’, ‘/usr/lib/python2.7/lib-old’, ‘/usr/lib/python2.7/lib-dynload’, ‘/usr/local/lib/python2.7/dist-packages’, ‘/usr/lib/python2.7/dist-packages’]

Имя моего проекта – danial, в нем есть приложение, галерея. Моя статическая папка, расположенная в /danial/gallery/static, я так запуталась. Здесь все статические связанные строки в моем проекте:

###settings.py STATIC_ROOT = ‘/srv/projects/app/danial/gallery/static/’ STATIC_URL = ‘/static/’ STATICFILES_DIRS = (‘/srv/projects/app/danial/gallery/static/’,) ###apache setting Alias /static/ /srv/projects/venv/lib/python2.7/site-packages/django/contrib/admin/static/ ###urls.py from danial import settings from django.conf.urls.static import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Он хорошо работает на моем местном. Что я знаю?

Лучший ответ:

Я изменил статический псевдоним из
/srv/projects/venv/lib/python2.7/site-packages/django/contrib/admin/static/ to /srv/projects/app/danial/gallery/static/ и удаленные статические связанные строки из urls.py

Мне просто нужно скопировать ../django/../static/admin ../projects/../static/admin. Теперь проект django работает отлично.

Ответ №1

В urls.py, когда вы используете:

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

вам необходимо определить MEDIA_URL без пустого значения в settings.py.

И определите STATIC_URL без пустого значения в settings.py если вы используете:

static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Также он работает, когда для DEBUG установлено значение True (во время разработки). Вот исходный код sattic:

def static(prefix, view=serve, **kwargs): if not settings.DEBUG or (prefix and ‘://’ in prefix): return [] elif not prefix: raise ImproperlyConfigured(«Empty static prefix not permitted») return [ url(r’^%s(?P<path>.*)$’ % re.escape(prefix.lstrip(‘/’)), view, kwargs=kwargs), ]

Оцените статью
Добавить комментарий