python - 在开发中提供静态文件

标签 python django

我有一些当前由 Amazon S3 提供的静态文件。这显然是无效的,因为我不能 collectstatic每次我做出微小的改变。每当我进行开发时,我都想从收集静态文件的项目中提供服务。项目结构部分如下所示:

myproject
-app
--templates

-myproject
--static
---app
----css
----js
----img

我的settings.py看起来部分像这样:

STATIC_ROOT = 'staticfiles'

MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static/app'),
)

AWS_HEADERS = {
    'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
    'Cache-Control': 'max-age=94608000',
}

AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']

AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

if DEBUG:
    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
    STATIC_URL = '/static/'
else:
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    STATIC_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN


STATICFILES_LOCATION = 'static'

MEDIAFILES_LOCATION = 'media'
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

我想要实现的是,如果我正在运行开发(当 DEBUG 为 true 时),则从项目中提供静态文件,而不是从 S3 中获取。

在我的urlpatterns的末尾在urls.py我有+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) .

最后,在我的 base.html 中我有:

<!doctype html>
...
  <link rel="stylesheet" href="{% static '/css/normalize.css'%}">

如果我运行 debug=True我查看了我看到的页面的来源 <link rel="stylesheet" href="/css/normalize.css">这不是文件所在的位置。如果我运行 debug=False并查看我得到的来源 <link rel="stylesheet" href="<AMAZON BUCKET>/css/normalize.css"> .

我在本地服务中缺少什么?

最佳答案

您必须将相对路径传递给 static 模板标记,不带标题斜杠:

{% static 'css/normalize.css' %}

关于python - 在开发中提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496634/

相关文章:

python - 使用 Apache 和多个 Django 站点的奇怪、不一致的行为

django - 在 EC2 上使用 nginx 设置 django

javascript - Django - 复制管理 list_display

python - 按列分组并为 group by 中使用的特定列分配不同的聚合函数

python - 在 python cv2 中找不到 KNearest()

python - 无法理解 PcapNG 文件中的 802.11 数据帧格式

python - 按增量器对文本列进行排序并枚举

python-3.x - 使用 ffmpeg 和 celery 编码后,编码视频的路径在数据库中发生更改,并且在没有 celery 的情况下正常工作

javascript - 隐藏单选按钮并仅以 django 形式显示标签(单选)

python - CTRL+ALT+DEL 在 win32api 和 python 中不起作用