簡體   English   中英

Django:css引用靜態文件中的媒體(django dev / 1.3 /靜態文件)

[英]Django: css referencing media in static files (django dev / 1.3 / static files)

像django用戶的任何其他用戶一樣,我提供靜態文件。 我選擇使用django-staticfiles為django 1.3做好准備,它基本上將它集成到核心中

我的問題非常簡單 - 這非常適合將多個媒體源整合在一起並在django模板中以統一的方式引用它們。 但是,我經常在Css中使用圖像背景,如下所示:

#itemname { background-image: url('/path/to/image.png'); }

我的問題很簡單 - 如果我使用絕對名稱,我必須對它們進行硬編碼。 如果我使用相對名稱,移動到“子目錄”URL會弄亂這些項目的資源位置,並且無法加載它們。

那么,我該如何將此解決方案擴展到CSS? 所述解決方案必須避免

  • 在html中嵌入css 我個人避免這個。
  • 使用硬編碼的網址 這不能很好地工作,因為在我的本地設置中,我通常使用'localhost / project'和apache進行測試(mod_wsgi),而我傾向於使用project.com進行部署。

想法?

你說你有相對路徑的問題,但我不明白你的意思。

我遇到了同樣的問題,我用相對路徑來解決它。 唯一要記住的是,部署圖像時(顯然)需要保持相對於CSS文件的相同路徑。

我的設置簡而言之:

注意我仍在使用Django 1.2的django-staticfiles,但它應該與Django 1.3類似

STATIC_URL = "/site_media/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, "static_media"),
)

然后,我服務從CSS {{ STATIC_URL }}css/style.css其在引用圖像../images/logo.png

我的項目看起來像這樣:

project_dir
  ...
  stuff
  static_media
    ...
    css
    images

如果您有任何問題,請告訴我,我會澄清一下。

好,

我不知道@ John的解決方案是否有問題,但它對我不起作用然后我把這個代碼放在CSS上

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<link rel="stylesheet" href="{{ STATIC_PREFIX }}css/main.css">

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM