python - 使用 STATICFILES_DIRS 而不是 STATIC_URL 时加载静态 css 和 js

标签 python html django pycharm

我的settings.py是

STATIC_URL = '/some_location/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

我的 urls.py

urlpatterns = [ multiple path ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我的基本 .html 目录结构是,

enter image description here

上图中我的目录根

-project directory
-->appname
-->static
---->css
------>master.css
---->js
----->master.js

我使用pycharm IDE。

The error message I get is 

"GET /some_location/static/js/master.js HTTP/1.1" 404 1736
"GET /some_location/static/css/master.css HTTP/1.1" 404 1742

当我在浏览器中使用上述位置 /some_location/static/js/master.js 时,我可以看到文件内容。

如何在 Pycharm 的开发服务器上正确加载 .css.js

更新1:

这似乎有效,但不知道为什么。有人可以解释一下为什么一个有效而另一个无效

STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

最佳答案

希望有一些澄清:

  • STATIC_URL告诉 Django 在渲染时应该为静态文件的所有链接添加哪个 url {% static %}链接。对于开发来说,最简单的设置为 /static/ 。在您的生产设置中,它可能会指向 CDN 后面的云提供商 URL(例如 https://my-cdn.cloudflare.net/static/ )。
  • STATIC_ROOT告诉collectstatic管理命令在哪里复制项目的所有静态文件。这通常与您的开发计算机无关(您直接从项目提供静态文件),但与生产中的部署相关:您需要将所有静态文件复制到外部的位置您的项目目录(例如 Amazon S3 等云存储桶)。
  • 您的静态文件应位于 static内部每个应用程序内的目录(即,在您的情况下为 appname/static 目录)。如果您还有一个单独的目录,例如 static直接在你的项目 BASE_DIR 中,然后你告诉 Django 使用 STATICFILES_DIRS 。这告诉runserver也去那里看看。在生产中,它告诉 collectstatic从哪里收集所有静态文件。

总结一下:STATIC_URL/path_to/my_file是用户在使用内置 Django runserver 时在浏览器中看到的 URL,STATIC_URL被剥离并 path_to/my_file在所有应用程序静态目录和STATICFILES_DIRS中列出的目录中进行搜索.

我还写了一个blog post关于这个。

关于python - 使用 STATICFILES_DIRS 而不是 STATIC_URL 时加载静态 css 和 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56008574/

相关文章:

python - redis 在我的 python django 应用程序中不工作

python - 使用 Pandas 将字符串列更改为多个 bool 列

python - 如何在 Python 中更改图像的 MD5 哈希值?

html - 我可以强制 html 元素呈现特定的媒体大小吗?

javascript - jQuery获取背景图像高度并根据比例更改父级

python - Django 注册表单中不区分大小写的用户名

python - Python多处理池线程安全吗?

python - 导入错误: Cannot import name 'Asset' bigchaindb

html - Firefox 不接受 CSS

django - 显示模板中每个字段的django表单错误和模板中的每个正确数据