我一直都在阅读文档,这对我来说没有意义.我运行了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/',
)
Run Code Online (Sandbox Code Playgroud)
这是我试图在我的模板中使用的代码:
<link rel="stylesheet" href="{{ STATIC_URL }}css/960.css" />
Run Code Online (Sandbox Code Playgroud)
好.我做了所有人推荐的改变.这是我的新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()
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?通常我的问题变成了CS专业人员认为理所当然的基本问题,但我想念.
这是我的设置方式。听起来您可能缺少静态上下文处理器?
STATIC_ROOT 和 STATIC_URL
在开发中使用的settings.py中:
STATIC_ROOT = ''
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)
我的生产服务器上使用的 settings.py :
STATIC_URL = '//static.MYDOMAIN.com/'
STATIC_ROOT = '/home/USER/public_html/static.MYDOMAIN.com/'
Run Code Online (Sandbox Code Playgroud)
因此,所有静态文件都位于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....
)
Run Code Online (Sandbox Code Playgroud)
开发中的服务器静态资产
Django 在生产中不会收到对静态资产的请求,但是,在开发中,我们只是让 Django 为我们的静态内容提供服务。我们使用staticfiles_urlpatternsinurls.py告诉 Django 为static/*.
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# .... your url patterns are here ...
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5422 次 |
| 最近记录: |