在开发中如何向 Django 提供 CSS?

2024-02-08

我已经阅读了所有文档,但它对我来说没有意义。我运行了collectstatic,我在我的应用程序和项目目录中设置了/static/目录,我将STATIC_URL和STATIC_ROOT添加到我的settings.py文件中(但我不知道如何知道它们是否设置正确)和{{ STATIC_URL }} 仍然没有呈现任何内容。仅仅将 html 连接到 css 看起来就有点过分了。

我想我迷失在细节中;谁能提供这个静态文件想法的高级细分?恐怕我可能对生产和开发设置有混合的说明。

更多:这是我的 settings.py 文件中的相关部分:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'django.contrib.staticfiles',
    'dashboard.base',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
)

STATIC_ROOT = ''
STATIC_URL = '/static/'


STATICFILES_DIRS = (
    'C:/Users/Sean/Desktop/Work Items/dashboard/base/static/',
)

这是我尝试在模板中使用的代码:

<link rel="stylesheet" href="{{ STATIC_URL }}css/960.css" />

好的。我做了大家建议的改变。这是我的新 urls.py:

from django.conf.urls.defaults import *
from base.views import show_project
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Example:
# (r'^dashboard/', include('dashboard.foo.urls')),

# Uncomment the admin/doc line below to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
('^show_project/$', show_project),
)

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': True }),
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': True }))

urlpatterns += staticfiles_urlpatterns()

我错过了什么吗?通常我的问题都是一些非常基本的问题,CS 专业人士认为这是理所当然的,但我很怀念。


这是我的设置方式。听起来您可能缺少静态上下文处理器?

STATIC_ROOT 和 STATIC_URL

开发中使用的settings.py中:

STATIC_ROOT = ''
STATIC_URL = '/static/'

以及我的生产服务器上使用的 settings.py:

STATIC_URL = '//static.MYDOMAIN.com/'
STATIC_ROOT = '/home/USER/public_html/static.MYDOMAIN.com/'

所以,所有静态文件都位于static/。在生产服务器上,所有这些文件都位于static/被收集到/home/USER/public_html/static.MYDOMAIN.com/它们由不同的 Web 服务器(在我的例子中是 nginx)而不是 Django 提供服务。换句话说,我的 django 应用程序(在 Apache 上运行)甚至从未收到对生产中静态资产的请求。

上下文处理器

为了使模板具有STATIC_URL他们可用的变量,您需要使用django.core.context_processors.static上下文处理器,也定义在settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    # other context processors....
    'django.core.context_processors.static',
    # other context processors....
)

开发中的服务器静态资产

Django 在生产中不会收到对静态资产的请求,但是,在开发中我们只是让 Django 提供静态内容。我们用staticfiles_urlpatterns in urls.py告诉 Django 处理请求static/*.

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# .... your url patterns are here ...
urlpatterns += staticfiles_urlpatterns()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在开发中如何向 Django 提供 CSS? 的相关文章

随机推荐