我在开发服务器上的Django项目中设置静态文件时遇到问题。我使用Django-1.6.1和Python 2.7.5+。
我按照这个链接的指示: Managing static files (CSS, images)
所以,我将 django.contrib.staticfiles 添加到INSTALLED_APPS
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'BlogContent',
)
我设置了 STATIC_URL :
STATIC_URL = '/static/'
我还修改了我的urls.py:
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$', home_view ),
url(r'^about/$', about_view )
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在模板中我使用此标记:
{% load staticfiles %}
<img src="{% static "elo.jpg" %}"/>
并且所有文件都进入project_root / static /并且在运行服务器后我收到了这个:
"GET /static/elo.jpg HTTP/1.1" 404 1625
你有任何想法如何解决它?提前感谢您的帮助。
答案 0 :(得分:1)
Django本身并不提供文件;它将该作业留给您选择的任何Web服务器。
请删除+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
中的urls.py
。使用Apache2存储静态或媒体文件
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-files
在您的Apache *.conf
文件(Apache 2.4)
<VirtualHost *:80>
ServerName example.com
ServerAdmin example@example.com
Alias /media/ /home/tu/blog/media/
Alias /static/ /home/tu/blog/collected_static/
<Directory /home/tu/blog/media>
Require all granted
</Directory>
<Directory /home/tu/blog/collected_static>
Require all granted
</Directory>
WSGIScriptAlias / /home/tu/blog/blog/wsgi.py
<Directory /home/tu/blog/blog>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
如果使用Apache 2.2,请使用
Order allow,deny
Allow from all
而不是
Require all granted
注意:您可以运行apachectl -v
来查看Apache2版本
答案 1 :(得分:0)
这是一个nginx配置的spinet,用于提供静态文件&amp;代理名为APP的应用程序:
http {
…
server {
…
location /static/ {
autoindex on;
alias /usr/share/nginx/html/static/;
}
location /APP {
return 301 /APP/;
}
location /APP/ {
rewrite ^/intranet(.*) /$1 break;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
}
}
}
请注意,我使用gunicorn在localhost:8000
上运行我的应用,但我使用http://localhost/APP
连接到该应用。