我正在使用django 1.5
我可以在生产中提供文件,因为它是在apache级别处理的。这是我的httpd.conf文件:
<VirtualHost *:80>
WSGIScriptAlias / /home/membership/membership/wsgi.py
Alias /static/ "/home/membership/static/"
<Directory /home/membership/static>
Order deny,allow
Allow from all
</Directory>
<Directory "/usr/lib/python2.6/site-packages/django/contrib/admin/static/admin">
Order deny,allow
Allow from all
</Directory>
<Directory /home/membership/membership>
<Files wsgi.py>
Order deny,allow
Satisfy Any
Allow from all
</Files>
</Directory>
</VirtualHost>
由于Alias /static/ "/home/membership/static/"
当我尝试在我的本地开发环境中运行应用程序时,我无法让它提供静态文件我只是得到一个页面找不到404错误。我猜这是因为当我在本地开发时,请求直接进入开发服务器,因为没有使用apache。
我在/static/me.png有一个文件。
我是否应该指定在开发中提供静态文件的地方?
运行python manage.py collectstatic
时,似乎只收集管理员应用的静态文件。我有一个文件直接在我试图服务的/ app / static目录中。
答案 0 :(得分:9)
您是否在网站设置中定义了静态文件的路径?我的意思不是网址/static/
,我的意思是STATICFILES_DIR
(它告诉你的devserver,静态文件就像配置文件告诉apache
)
最好只关注文档,这绝对是绝对的:
答案 1 :(得分:7)
如果您在开发期间提供静态文件
在 settings.py 文件中:
# Add it on your settings.py file
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # your static/ files folder
]
示例:
在您的根 urls.py 文件中:
# add these lines
from django.conf import settings
from django.conf.urls.static import static
# Add +static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
示例:
这不适合生产使用!查看更多:https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-during-development
对于媒体/ 目录中的媒体文件: https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user-during-development
答案 2 :(得分:5)
在urls.py
中,只需在底部添加:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^stati_directory/(?P<path>.*)$', 'django.views.static.serve',
{'document_root':settings.STATIC_ROOT}),)
确保DEBUG = True
答案 3 :(得分:-1)
在settings.py
文件中更新以下行。
STATIC_URL = '/static/'
MEDIA_URL = '/static/media/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,’’)]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
在主url.py
中添加以下行作为网址。
from django.conf.urls.static import static
from django.conf import settings
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)