django-cms没有正确路由到静态URL?

ine*_*eep 6 django-cms

我还是相对较新的Django并且刚开始在Django-CMS上闲逛,但是,我无法通过官方文档的基本介绍.

我的问题可能与sekizai有关,但感觉它是urls.py中的基本网址问题.

基本上,我几乎完全按照教程.唯一的区别是我有我的cms应用程序在blog /,完整路径〜/ workspace/djangocms/blog /.我已经设置了STATIC_URLSTATIC_ROOT正常下settings.py和我一样去MEDIA_URLMEDIA_ROOT.

我调出了媒体路径和目录,因为如果我将我的基本模板设置为链接到css {{ MEDIA_URL }}css/somecss.min.css就可以了.但是,对STATIC_URL执行相同操作:{{ STATIC_URL }}css/somecss.min.css不起作用并生成404.

另外,据我所知,默认/静态/路由似乎适用于其他目录.通过{% cms_toolbar %}从/static/cms/css/plugins/cms.toolbar.css这样的地方生成fine和css生成的代码正在正常提供.

urls.py的内容

from django.conf.urls.defaults import *                                         
from django.contrib import admin
from django.conf import settings

admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'blog.views.home', name='home'),
    # url(r'^blog/', include('blog.foo.urls')),

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

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    (r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),
)
if settings.DEBUG:
    urlpatterns = patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT,
        'show_indexes': True}),
        url(r'',
        include('django.contrib.staticfiles.urls')),
    ) + urlpatterns
Run Code Online (Sandbox Code Playgroud)

小智 8

在遵循相同的教程后,我经历了这个问题.

我的网站将加载标准的欢迎页面,我可以创建CMS页面.但是,当我尝试在模板中加载静态文件时,我不断收到404错误.

OP提供的答案对我帮助很大.

为了清楚起见,这对我有用:

  1. 将项目中的静态目录重命名为local_static

  2. 将以下内容添加到settings.py中

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))

STATICFILES_DIRS = ( os.path.join(PROJECT_PATH, "local_static/"), )

这对我有用.我现在可以停止拔头发了


ine*_*eep 6

在freenode上从#django得到了答案.如果有人需要,我自己在这里回答:

主要用于django-cms,STATIC_ROOT主要用于生产过程中django-cms本身的资产.如果正在使用该python manage.py runserver方法运行django ,则STATIC_ROOT无关紧要.

来自Django文档:collectstatic用于收集所有使用的静态资产(django-cms可能位于/ usr/local/lib/python ##/dist-packages之类的目录下).这显示了STATIC_ROOT在生产过程中将使用哪些文件.

如果您想为其他目录与STATIC_URL,你必须将它们添加到STATICFILES_DIRS的部分settings.py.(确保阅读注释 - 使用绝对路径而不是相对路径).这在制作纯Django应用程序时实际上是相对明显的,但是,因为我想严格遵循Django-cms教程,这并不像它应该的那样明显.