为什么我的静态 CSS 在 Django 中不起作用?

新手上路,请多包涵

我的静态 CSS 不适用于我的 Django 网络应用程序时遇到问题。我已按照 Django 静态链接教程 中关于处理静态文件的说明进行操作,但它仍然无法正常工作。

设置

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/Users/a9austin/Development/sites/AlphaSocks/src/static_root/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/Users/a9austin/Development/sites/AlphaSocks/src/staticfiles'

)

看法

#from django.http import HttpResponse
from django.shortcuts import render_to_response

def index(request):
return render_to_response('index.html')

索引.html

 <link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css" media="screen" >

我的目录组织是

src->staticfiles->css->style.css

原文由 AustinT 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

要使 Django 提供静态文件,您必须确保有几个设置。

STATIC_URL

此设置指定静态文件应映射到的 url。你已经完成了。

STATICFILES_DIRS

这指定了系统上 Django 应在其中查找静态文件的所有文件夹。这个想法是你的项目中可能有几个应用程序,每个应用程序可能需要一组不同的静态文件。因此,出于组织目的,每个应用程序可能包含一个 static 目录,它将仅存储它的静态文件。所以 Django 必须有办法知道这些目录在哪里。这就是此设置的用途。

静态根目录

此设置指定 Django 将所有静态文件复制到的位置,而不是静态文件已经存在的位置。这个想法是,一旦您将开发投入生产,Django 将无法再提供静态文件,因为我不会在此处讨论(在 文章中)。但是对于生产环境,所有静态文件都应该在一个目录中,而不是在 STATICFILES_DIRS 中指定的许多目录中。因此,此设置指定一个目录,Django 将通过运行以下命令从 STATICFILES_DIRS 中的所有文件中复制所有静态文件:

 $ python manage.py collectstatic

请注意,只有在您投入生产后才需要这样做,并且此处指定的目录不能与 STATICFILES_DIRS 中指定的任何目录相同。

网址.py

在为 Django 提供静态文件服务的开发过程中,您必须在 urls.py 中包含静态 url:

 from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = ...

urlpatterns += staticfiles_urlpatterns()


一旦你完成了上述所有事情,只要你有 DEBUG = True 就应该提供你的静态文件。在上面的列表中,您似乎只完成了 STATIC_URL 。另请注意,我上面描述的所有步骤都在您在问题中链接的文档中( 链接)。一开始可能有点混乱,但如果你读几遍,它就会变得更清楚。

原文由 miki725 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试清除缓存。如果您使用的是谷歌浏览器,请转到您的设置>清除浏览数据>选择清除缓存的图像和文件,然后单击清除数据

原文由 Joshua Blue- Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题