【问题标题】:Django Static Files CSSDjango 静态文件 CSS
【发布时间】:2011-06-18 09:35:28
【问题描述】:

如何查看我的静态 css 文件?我已经设置了我的 STATIC_ROOT,并且正在使用 python manage.py runserver

在我的开发环境中,根据the docs,我只需要将我的静态文件(本例中为/static/css/typography.css)放在我的STATIC_ROOT中,python manage.py runserver 如果我有DEBUG = True,将自动创建访问它所需的视图。

STATIC_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), "static")

我也尝试在 URLConf 中手动添加视图,它也不会显示 css 文件:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

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

urlpatterns += staticfiles_urlpatterns()

在我的模板中,{{ STATIC_URL }} 到达了正确的地址 (/static/css/typography.css),但是当我尝试访问它时它不会提供文件:

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

注意:StackOverflow 上其他与 Django 相关的静态文件问题已有两年多的历史了。 Django 1.3b1 版本区分了 STATIC(静态文件,例如 css 和图像)和 MEDIA(用户上传的文件)。

【问题讨论】:

  • 更准确地说,您将 STATIC_URL 设置为什么?

标签: django static


【解决方案1】:

在这里回答:Django staticfiles app help

我将我的文件放在 STATIC_ROOT 中,所以添加这个可以:

STATICFILES_DIRS = (STATIC_ROOT,)

【讨论】:

【解决方案2】:

此外。上面提到的所有尝试,您还必须确保您的模板在从视图调用时接收到 RequestContext。

http://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/

此链接提供了多种相同的方法,您可以选择任何一种。 :) 此外,必须将 TEMPLATE_CONTEXT_PROCESSORS 添加到 settings.py 才能生效。

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "myapp.processor.foos",
)

注意:STATIC_ROOT 是 Django 从 STATICFILES_DIRS 收集静态文件后存储它们的地方。 Runserver 将从 STATIC_ROOT 中提到的路径中获取它们,因此 STATIC_URL 应该指向与 STATIC_ROOT 相同的位置。

【讨论】:

    【解决方案3】:

    开发中:

    #settings.py have this by default 
    

    STATIC_URL = '/static/'

    这意味着当你想使用静态文件时,django 会在你的应用目录的“static”文件夹中寻找它们。因此,您需要在每个应用程序中创建文件夹“静态”并将其放入静态文件中。

    生产中:
    1. 为所有应用的静态文件留出空间

    STATIC_ROOT = "/var/www/example.com/static/"
    

    2。运行 python manage.py collectstatic 以从 STATIC_ROOT 文件夹中的所有应用程序中收集静态文件。
    3. 在 settings.py 中更改 DEBUG=FalseALLOWED_HOSTS = ['yourhostadress']
    4. 将您的网络服务器指向 STATIC_ROOT 文件夹(例如,对于 Apache2.4):

    Alias /static/ /path/to/mysite.com/static/
    <Directory /path/to/mysite.com/static>
    Require all granted
    </Directory>
    

    完成此设置后,您的 django 项目应该能够运行(使用 mod_wsgi)并在 Apache Web 服务器上使用静态文件。

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 2012-12-16
      • 1970-01-01
      • 2013-06-24
      • 2020-08-31
      • 2022-07-22
      • 2017-10-08
      • 2022-01-18
      • 2011-11-26
      相关资源
      最近更新 更多