如何在Django开发中提供静态文件

时间:2012-03-08 03:42:02

标签: django file static

这是pf项目的目录结构。

mysite
  \media
  \static
       \images
       \css
           base.css
       \js 
  \templates
       base.html
  \settings.py #and other .py files

现在说如果我有一个文件C:\mysite\static\css\base.css或一个图像C:\mysite\static\images\ball.png。我将如何使用django开发服务器来提供它。我知道这不是推荐方式,但只是在开发中我希望这个工作。我已经阅读了stackoverflow上的文档和其他答案,但它们似乎不起作用。可能是mediastatic以及urlpatterns让我感到困惑。我花了好几个小时试图解决这个问题,但仍然没有运气。 我是django的新手,所有这些对我来说只是一个过度杀戮来获得css或图像。 我需要做些什么改变或编辑才能使其工作。我将如何在模板中引用图像和css?

3 个答案:

答案 0 :(得分:4)

以下是Django documentation中静态文件的方法,它将逐步引导您完成整个过程。

将以下内容添加到您的urls.py

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()

然后'当您使用内置的runserver管理命令时,此视图将自动启用并将在STATIC_URL处为您的静态文件提供服务。 ...这将检查您的STATIC_URL设置并连接视图以相应地提供静态文件。不要忘记适当地设置STATICFILES_DIRS设置,让django.contrib.staticfiles知道在app目录中除了文件之外还要查找文件的位置。'

值得一提的是,这绝对不适合部署,但适用于开发。

答案 1 :(得分:3)

问题在于你不应该在STATIC_ROOT中手动输入任何内容。它只是生产中collectstatic管理命令的倾销场,应该由您的网络服务器提供。

在开发过程中,Django 会自动为应用的“静态”目录和STATICFILES_DIR中的任何文件夹提供任何内容。如果您有项目范围的静态资源,则需要创建一个完全独立的文件夹,不同于STATIC_ROOTMEDIA_ROOT,并将其添加到STATICFILES_DIRS。我通常把它称为“资产”,但它的名字并不重要。

答案 2 :(得分:0)

  1. 在settings.py
  2. 中将mediastatic的完整路径添加到STATICFILES_DIRS
  3. 确保settings.py中的TEMPLATE_CONTEXT_PROCESSORS中有'django.core.context_processors.static',默认为
  4. 在模板中使用{{ STATIC_URL }}images/ball.png