【问题标题】:Django template can't see CSS filesDjango 模板看不到 CSS 文件
【发布时间】:2010-11-07 17:25:48
【问题描述】:

我正在构建一个 django 应用程序,但无法获取模板来查看 CSS 文件...我的 settings.py 文件如下所示:

MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')
MEDIA_URL = '/media/'

我在 /mysite/media/css/ 中有 CSS 文件,模板代码包含:

<link rel="stylesheet" type="text/css" href="/media/css/site_base.css" />`

然后,在我的 url.py 文件中:

# DEVELOPMENT ONLY
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/media'}),

但开发服务器提供纯 html(没有样式)。我究竟做错了什么?

--

好的-根据你们所说的,我得到了它。答案是:

settings.py:

MEDIA_ROOT = 'd://web//mysite//media//'  #absolute path to media
MEDIA_URL = '/mymedia/' #because admin already using /media

site_base.html:

<link rel="stylesheet" type="text/css" href="/mymedia/css/site_base.css" />

urls.py

from mysite import settings
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^mymedia/(?P<path>.*)$', 'django.views.static.serve',  
         {'document_root':     settings.MEDIA_ROOT}),
    )

瞧!它有效。

【问题讨论】:

  • 好的...赞成帮助我摆脱困境,但是.../mymedia/ 内的/mymedia/ 目录/media/...所以,它需要什么它在href?它在哪里看?

标签: python css django django-templates


【解决方案1】:

在您的 urls.py 中的“仅开发”块中,您需要更改

(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/media'}),

到...

(r'^media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.MEDIA_ROOT}),

【讨论】:

    【解决方案2】:

    ADMIN_MEDIA_PREFIX 默认设置为\media\,可能是在“窃取”路径。更改该设置,或为非管理员媒体使用不同的设置 - 例如 site_mediaassets

    【讨论】:

    • 谢谢丹尼尔!我已经把头发拉出来了!这不是我第一次发现你对 django 问题的回答很有帮助,所以我想这只是非常感谢你。
    【解决方案3】:

    在开发服务器上,我喜欢作弊并将以下内容放在我的 urls.py 中

    if settings.DEBUG:
        urlpatterns += patterns('',
            (r'^includes/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/static/files'}),
        )
    

    这样,“/includes”文件夹下项目中的任何内容都是开发服务器的服务器。你可以把它改成“/media”。

    【讨论】:

      【解决方案4】:

      它也对我有用,谢谢大家!!

      settings.py

      MEDIA_ROOT = '/home/pi/ewspaces/ws-classic/xima/media'
      
      MEDIA_URL = '/statics/'
      

      urls.py

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

      模板内:

      <link type="text/css" href="/statics/css/base/jquery.ui.all.css" rel="stylesheet" />
      

      【讨论】:

      • 这也对我有用,但我想知道当我在 web 上部署项目时需要更改什么。
      【解决方案5】:

      当我试图让 jQuery 工作时,我遇到了类似的问题。我的解决方法是向我的 Apache httpd.conf 文件添加一个别名,该文件指向包含 .js 的文件夹。你可以对你的 CSS 文件夹做同样的事情。

      【讨论】:

        猜你喜欢
        • 2022-07-22
        • 2021-05-31
        • 2018-04-01
        • 2020-07-06
        • 2020-02-26
        • 2016-02-09
        • 1970-01-01
        • 2020-12-09
        • 2014-12-30
        相关资源
        最近更新 更多