DJANGO静态url链接到错误的文件夹

2024-09-28 21:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Django构建一个应用程序,但我遇到了一个问题。 我使用的是DEBUG=True 我创建了run/static文件夹,当我使用collectstatic命令时,所有静态文件都会被移动到该文件夹中(因此这很有效)

我在设置中有这个

静态URL='/STATIC/' STATIC\u ROOT=join(项目\u ROOT,‘运行’、‘静态’)

现在,为了测试与静态文件夹的连接,我尝试在路径testapp/static/testapp/testfile.css中添加一个文件

正确运行collect static后,文件将移动到run/static/testapp/testfile.css

太好了。问题是,我发现当我运行服务器时,URLhttp://127.0.0.1:8000/static/testapp/testfile.css没有读取正确文件夹(/run/static…)中的文件,但它从/testapp/static…)读取这些文件。。。事实上,如果我将run文件夹中的文件名更改为testfile1.css,并尝试URLhttp://127.0.0.1:8000/static/testapp/testfile1.css,它找不到任何文件,但是如果我将当前位于/testapp/static/testapp/中的文件名更改为testfile2.css,然后在不运行collectstatic的情况下,尝试URLhttp://127.0.0.1:8000/static/testapp/testfile2.css,它会工作。 这意味着静态URL“连接”到每个应用程序的所有静态文件夹(如testapp/static/testapp/),而不是我用static_ROOT(run/static/testapp/)选择的静态文件夹

我的问题清楚吗? 你们认为错误可能是什么

谢谢


Tags: 文件run文件夹应用程序url文件名静态static
2条回答

为了使静态文件夹在远程Apache和本地Django开发服务器上都能工作,以便我可以使用Git repo进行同步,这对我来说是可行的collectstatic只会复制静态文件,这会破坏您的Git repo

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"), '/var/www/mydjango/static/',] 

你所描述的是Django应该如何运行。所以实际上没有错误

当使用DEBUG=True运行开发服务器时,Django从staticfile查找程序发现静态文件的任何地方提供静态文件。默认情况下,查找程序在每个已安装的应用程序中查找静态子目录。您可以使用STATICFILES\u dirs设置指定更多的dir

collectstatic命令将所有发现的静态文件复制到STATIC\u根目录中,用于生产目的。在生产环境中,这种机制非常方便,因为您必须将web服务器配置为提供静态文件(因为不建议在生产环境中使用Django开发服务器)。您可以将web服务器(例如Nginx)指向静态根文件

您可以查看Django文档here。但不可否认,关于这一主题的文献并不总是非常清楚

相关问题 更多 >