我的任务是修复django 1.3站点的某些方面,该站点在服务器上的Apache / PostgreSql上运行。我正在尝试在我的开发机器上设置它,使用带有postgres的虚拟环境和内部python开发服务器。
我设法让网站运行并从我的本地pg实例中读取,但我无法识别我的静态文件,这些文件存储在/site_media
中。该网站很快将被重写为使用django 1.6和正确的/static
文件夹,但现在我需要修复此网站。
我也试过用nginx和gnunicorn运行它,但结果是一样的,网站显示但没有样式,所有对静态目录中文件的引用给出了404.对404的进一步检查显示django正在尝试用路由器解析资源。
以下是相关设置:
settings.py:
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = '/home/nico/src/df2/datos/site_media/'
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = 'http://localhost:8000/site_media/'
我还添加了以下配置,但无济于事:
INSTALLED_APPS = (
'django.contrib.staticfiles',
)
STATICFILES_DIRS = (
'/home/nico/src/df2/datos/site_media/',
)
STATIC_URL = 'http://localhost:8000/site_media'
nginx配置文件:
server {
server_name localhost;
access_log off;
location /site_media/ {
alias /home/nico/src/df2/datos/site_media;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
如果您需要任何其他配置,请告诉我。
我更喜欢纯粹从python服务器上运行,但是使用gunicorn / nginx的解决方案也很好
答案 0 :(得分:0)
修复是在urlpatterns变量中添加一个静态处理程序:
from django.conf import settings
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))