【问题标题】:How can I use peterbe's django-static to serve both static and media?如何使用 peterbe 的 django-static 来同时提供静态和媒体服务?
【发布时间】:2012-12-15 11:36:34
【问题描述】:

注意:这与 django-staticfiles 不同,因为它内置了压缩功能。

我的 /static/ 用于我自己上传的静态文件,而 /media/ 用于用户上传的文件。但是,DJANGO_STATIC_MEDIA_URL 依赖于所有静态文件都在一个 url 下这一事实。

我错过了什么吗?还是我必须在每个模板上手动设置 {{ MEDIA_URL }} 和 {{ STATIC_URL }}?

另外,我该如何设置,以便将 django-static 生成的符号链接完全上传到 S3?

我使用的是 Django 1.4,我当前的配置是:

DJANGO_STATIC = True
DJANGO_STATIC_MEDIA_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
DJANGO_STATIC_MEDIA_ROOTS = [os.path.join(SITE_ROOT, 'static')]

【问题讨论】:

  • 你使用的是什么版本的 Django,只是一个问题?
  • 啊,我把它与从 1.3 开始与 Django 集成的静态文件应用程序混淆了 - 抱歉。

标签: django django-static


【解决方案1】:

虽然我没有使用过这个应用程序,但在阅读了文档后,似乎 DJANGO_STATIC_MEDIA_URL 是一种快捷方式,可以最大限度地减少在定义图像 src 属性的位置时包含 {{ MEDIA_URL }} 的需要。

您定义 DJANGO_STATIC_MEDIA_URL (www.mysite.com/media),然后您可以访问上传媒体的位置,如

<img src="{% staticfile "/foo.png" %}"/>

而不必将位置写为:

<img src="{{ MEDIA_URL }}{% staticfile "/foo.png" %}"/>

所以,要引用您的 css 和 js 静态文件,请继续使用 {{ STATIC_URL }}。要引用您上传的媒体,请定义 DJANGO_STATIC_MEDIA_URL 并仅使用 {% staticfile %} 模板标签,或者像往常一样仅使用 {{ MEDIA_URL }}。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 2017-09-17
    • 2012-11-23
    • 2018-07-20
    • 2020-02-26
    • 2012-10-29
    • 2023-03-25
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多