Вопрос:
Я установил 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), ]