使用django runserver开发服务器时如何提供静态文件?

Spe*_*ley 4 django

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

这在生产中很好用,因为 Alias /static/ "/home/membership/static/"

当我尝试在我的本地开发环境中运行应用程序我不能让它为静态文件我刚刚得到一个页面没有找到404错误.我猜这是因为当我在本地开发时,请求直接进入开发服务器,因为没有使用apache.

在此输入图像描述

我在/static/me.png有一个文件.

是否有某些地方我应该指定在开发中提供静态文件?

运行python manage.py collectstatic时似乎只收集管理员应用程序的静态文件.我有一个文件直接在我试图服务的/ app/static目录中.

yuv*_*uvi 10

您是否在网站的设置中定义了静态文件的路径?我不是指网址/static/,我的意思是STATICFILES_DIR(这是告诉你的devserver静态文件就像配置文件所说的那样apache)

最好只关注文档,这绝对是绝对的:

文档


Fre*_*usa 9

如果您在开发期间提供静态文件

在您的settings.py文件中:

# Add it on your settings.py file
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"), # your static/ files folder
]
Run Code Online (Sandbox Code Playgroud)

例:

在此输入图像描述

在你的root 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)
Run Code Online (Sandbox Code Playgroud)

例:

在此输入图像描述

这不适合生产使用!查看更多: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