我的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是
我的目录根源于上图
-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')]
答案 0 :(得分:1)
希望这里有一些澄清:
STATIC_URL
告诉Django在呈现{% static %}
链接时应该为静态文件的所有链接添加哪个URL。对于开发而言,将其设置为/static/
是最简单的。在您的生产设置中,它可能指向CDN后面的云提供商网址(例如https://my-cdn.cloudflare.net/static/
)。STATIC_ROOT
告诉collectstatic
管理命令在哪里将项目的所有静态文件复制到哪里。这通常与开发机器无关(您可以直接从项目中提供静态文件),但与在生产环境中进行部署有关:您需要将所有静态文件复制到以下位置:外部您的项目目录(例如Amazon S3之类的云存储桶)。static
目录中的appname/static
)。如果您在项目BASE_DIR中也有一个单独的目录,例如static
,则可以使用STATICFILES_DIRS
告诉Django。这告诉runserver
也要看那里。在生产中,它告诉collectstatic
从哪里收集所有静态文件。因此,总结一下:STATIC_URL/path_to/my_file
是用户在浏览器中看到的URL,使用内置的Django运行服务器时,STATIC_URL
被剥离,path_to/my_file
在所有应用程序中搜索静态目录和STATICFILES_DIRS
中列出的目录。
我还为此写了blog post。