【问题标题】:Setting static background image in local Django environment在本地 Django 环境中设置静态背景图片
【发布时间】:2012-08-21 13:28:58
【问题描述】:

我正在尝试从头开始构建我的第一个 Django 项目,但在设置背景图像时遇到了困难。我一般是编程新手,如果这是一个愚蠢的问题,请原谅我。

我已经阅读了关于静态文件实现的文档 here 以及关于设置背景图像的各种堆栈溢出帖子(here here 和 here),但我仍然无法让它工作。

我有:

  • 将 django.contrib.staticfiles 安装为已安装的应用程序。

  • 将此添加到设置文件中:

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

  • 将 Static_Root 和 Static_URL 文件分别设置为 STATIC_ROOT = '/Users/user_name/development/projects/ecollar_site/static/' 和 '/static/'

  • 将此代码放在我的 URL 文件的末尾:

    `if settings.DEBUG:
    urlpatterns += patterns('',
    (r'^/static/(?P<path>.*)$', 'django.views.static.serve',
    {'/ecollar_site/': settings.STATIC_ROOT,
    'show_indexes' : True}),
    )`
    
  • 跑python manage.py collectstatic

  • 然后将此行放入 CSS 文件中。

    body{ font:16px/26px Helvetica, Helvetica Neue, Arial; background-image: url("{{ STATIC_URL }}img/IMG_0002.jpg"); }

我知道静态文件位正在工作,因为 CSS 已加载。我可以使用 background-color: blue 来改变背景颜色。但是静态图像根本没有被放置为背景图像。我是不是在某个地方犯了菜鸟的错误?

【问题讨论】:

    标签: django


    【解决方案1】:

    你的 css 文件没有被 Django 模板引擎渲染,所以 {{ STATIC_URL }} 没有被替换。您必须在 CSS 文件中使用 /static/img/IMG_0002.jpg 或在 html 文件的样式标签中移动该位 CSS。

    【讨论】:

    • 对,这是有道理的。我已经更改了 CSS 文件,但它仍然无法正常工作。我还需要改变什么吗?
    • 根据您的建议解决了这个问题。我只是忘记在 /static/img/IMG_0002.jpg 周围使用 url()。非常感谢您的帮助。
    【解决方案2】:

    试试这个

    settings.py

    MEDIA_URL = '/static_media/'
    

    urly.py

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

    模板上的 css 和 jquery

    <link rel="stylesheet" href="{{ MEDIA_URL }}base_min.css" type="text/css" media="screen">
    

    如果你使用的是生产版本,试试这个

    MEDIA_URL = 'http://media.example.org/'
    
    
    Development: /static_media/base_min.css
    Production: http://media.example.org/base_min.css
    

    希望对你有帮助

    不要忘记在您的 INSTALLED_APPS 中附加 'django.contrib.staticfiles',

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      相关资源
      最近更新 更多