Django:加入的路径位于基本路径组件之外
Django: The joined path is located outside of the base path component
我正在使用 Django 10,我不知道为什么在我成功收集我的静态文件后,当我尝试 运行 服务器处于部署模式(debug=False)时,它会发生这样的事情:
当我通过以下方式查找静态文件时:python manage.py findstatic /static/mysite/js/javascript.js
django.core.exceptions.SuspiciousFileOperation: The joined path (/static/mysite/js/javascript.js) is located outside of the base path component (/home/xxxx/.venvs/mysite/local/lib/python2.7/site-packages/django/contrib/admin/static)
我运行使用虚拟环境'mysite'。
在settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static')
MEDIA_ROOT = BASE_DIR + '/mysite/media'
MEDIA_URL = '/media/'
我的urls.py:
urlpatterns = [
url(r'', include('mysite.urls')),
]
urlpatterns += staticfiles_urlpatterns()
这对我来说是新的,我也已经做了一个 django 网站,它从来没有发生过这样的错误。为什么不考虑我的 STATIC_ROOT 路径?另一方面,collectstatic 工作正常。如果我 运行 服务器的调试为真,它就像一个魅力。
findstatic
的位置参数是您将传递给 static
以在模板中呈现特定静态文件的参数。您看到的错误是因为您使用了绝对路径,而不是您将传递给模板中的 static
函数的参数。你确定你不是这个意思:
python manage.py findstatic mysite/js/javascript.js
对于您将使用
引用的文件
{% static 'mysite/js/javascript.js' %}
或
python manage.py findstatic js/javascript.js
对于您要引用的文件
{% static 'js/javascript.js' %}
供您参考:
usage: manage.py findstatic [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath PYTHONPATH]
[--traceback] [--no-color] [--first]
staticfile [staticfile ...]
Finds the absolute paths for the given static file(s).
positional arguments: staticfile
n.b., django 的静态文件应用是not supposed to be used in production. In production, you are supposed to use a webserver to serve static files based. e.g., for nginx, you would include a block like this:
location /static {
root /path/to/django;
}
要调试您的静态文件,请在 运行 collectstatic 之后检查您的 STATIC_ROOT
目录,并确保您的文件在那里。如果是,请确保您的网络服务器配置为正确地为您的静态文件目录提供服务。
我正在使用 Django 10,我不知道为什么在我成功收集我的静态文件后,当我尝试 运行 服务器处于部署模式(debug=False)时,它会发生这样的事情:
当我通过以下方式查找静态文件时:python manage.py findstatic /static/mysite/js/javascript.js
django.core.exceptions.SuspiciousFileOperation: The joined path (/static/mysite/js/javascript.js) is located outside of the base path component (/home/xxxx/.venvs/mysite/local/lib/python2.7/site-packages/django/contrib/admin/static)
我运行使用虚拟环境'mysite'。
在settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static')
MEDIA_ROOT = BASE_DIR + '/mysite/media'
MEDIA_URL = '/media/'
我的urls.py:
urlpatterns = [
url(r'', include('mysite.urls')),
]
urlpatterns += staticfiles_urlpatterns()
这对我来说是新的,我也已经做了一个 django 网站,它从来没有发生过这样的错误。为什么不考虑我的 STATIC_ROOT 路径?另一方面,collectstatic 工作正常。如果我 运行 服务器的调试为真,它就像一个魅力。
findstatic
的位置参数是您将传递给 static
以在模板中呈现特定静态文件的参数。您看到的错误是因为您使用了绝对路径,而不是您将传递给模板中的 static
函数的参数。你确定你不是这个意思:
python manage.py findstatic mysite/js/javascript.js
对于您将使用
引用的文件{% static 'mysite/js/javascript.js' %}
或
python manage.py findstatic js/javascript.js
对于您要引用的文件
{% static 'js/javascript.js' %}
供您参考:
usage: manage.py findstatic [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath PYTHONPATH]
[--traceback] [--no-color] [--first]
staticfile [staticfile ...]
Finds the absolute paths for the given static file(s).
positional arguments: staticfile
n.b., django 的静态文件应用是not supposed to be used in production. In production, you are supposed to use a webserver to serve static files based. e.g., for nginx, you would include a block like this:
location /static {
root /path/to/django;
}
要调试您的静态文件,请在 运行 collectstatic 之后检查您的 STATIC_ROOT
目录,并确保您的文件在那里。如果是,请确保您的网络服务器配置为正确地为您的静态文件目录提供服务。