Недавно я хотел добавить функциональность на свой сайт.Чтобы ускорить этот процесс, я хотел подавать статические файлы с моей машины разработчика.В частности, я хотел использовать встроенный сервер разработчика, который поставляется с DJango v1.3.1;Модификация рабочего сервера - плохая идея, и необходимость загружать статические файлы каждый раз, когда они изменяются, тратит впустую много времени и энергии.
Однако разработка девайса для игры в мяч была кошмаром!Я только что потратил около 4 часов, пытаясь обработать статические данные, и оказалось, что все, что я ошибся, было то, что в начале STATIC_URL
серверу dev не нравился символ '/'?Я хотел бы знать, почему и / или что я делаю неправильно ...
Я пытался использовать настройки, предложенные в документации , но либо я ошибаюсь-читай что-нибудь или есть что-то еще.
Мой проект выглядит так:
<project root>
/app1
..various files..
/app2
..various files..
/static
/style
Style.css
/templates
manage.py
settings.py
settings_dev.py
settings_production.py
urls.py
Мой settings.py
определяет, на каком сервере мы работаем, и вызывает соответствующий settings_dev.py
илиsettings_production.py
, который работает хорошо, и все мои настройки работают нормально на производственном сервере.
My settings_dev.py
имеет следующее:
DEBUG = True
ADMINS = (
('Jon', 'jon@mydomain'),
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'dbuser',
'PASSWORD': 'dbpassword',
'HOST': '',
'PORT': '',
}
}
MEDIA_ROOT = ''
MEDIA_URL = '/media'
STATIC_ROOT = 'C:/Users/jon/PycharmProjects/myproject/static'
STATIC_URL = 'http://192.168.1.4/static'
STATICFILES_DIRS = ()
ADMIN_MEDIA_PREFIX = 'http://192.168.1.4/static/admin/'
TEMPLATE_DIRS = ('C:/Users/jon/PycharmProjects/myproject/templates',)
IS_PRODUCTION_SERVER=False
.. и urls.py
включает следующее:
from django.conf.urls.defaults import patterns, include, url
from django.conf import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^$', 'app1.views.index'),
(r'^/$', 'app1.views.index'),
url(r'^admin/', include(admin.site.urls)),
)
if settings.IS_PRODUCTION_SERVER is False:
print 'Adding DJango static serving from %s'%settings.STATIC_ROOT
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
Это работает так же, как мои шаблонывозьмите статический URL и дайте мне (например) http://192.168.1.4/static/style/Style.css
, но , если я изменю STATIC_URL
на /static
... и затем посетите http://192.168.1.4/static/style/Style.css
, я получаюОшибка 404:
'\style\Style.css' could not be found
Так что же происходит?