gpt4 book ai didi

python - 带有 ./manager runserver 的 Django 运行良好,而 Django + uwsgi 返回 404

转载 作者:行者123 更新时间:2023-11-28 21:27:09 24 4
gpt4 key购买 nike

这是关于 settings.py 中关于 static 的 settings.py:

STATIC_ROOT = '/home/coat/www/site/app/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
"/usr/lib/python2.6/site-packages/django/contrib/admin/static/",
# This is Django admin default static files
)

我使用 django 服务器:

./manager runserver

然后我打开网址:http://localhost:8000/static/admin/css/base.css

效果很好。

而是打开一个http://localhost/static/admin/css/base.css

它打印'404'

enter image description here

Nginx 和 uwsgi 重启了很多次,还是不行。

最佳答案

首先,这是nonono:

STATIC_ROOT = '/home/coat/www/site/app/static/'

永远不要对绝对路径进行硬编码,您只会让您的设置文件的便携性降低并且可能会杀死小猫。根据您的需要进行调整:

import os.path
import posixpath

PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')

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

# fix STATICFILES_DIRS too

现在,回答你的问题。 django.contrib.staticfiles 很棒,但一开始可能有点困惑。

  1. 必须了解 collectstatic command :

    Collects the static files into STATIC_ROOT. [...] Files are searched by using the enabled finders. The default is to look in all locations defined in STATICFILES_DIRS and in the 'static' directory of apps specified by the INSTALLED_APPS setting.

  2. 使用 runserver,静态文件会自动提供,但在生产模式下(DEBUG=False,真正的 HTTP 服务器,如 Nginx),您应该运行 collectstatic 来(重新)构建 STATIC_ROOT

  3. STATIC_ROOT:是 HTTP 服务器应该提供静态文件的根路径,来自

  4. STATIC_URL:是 HTTP 服务器应将静态文件提供给的根 URL。

  5. STATICFILES_DIRS:除了每个应用程序的“静态”子目录之外的其他静态目录。因为 django.contrib.admin 是一个带有“静态”文件夹的普通应用程序,所以不需要在设置中指定它。

结论:如果STATIC_ROOT解析为/home/coat/www/site/app/static/,且STATIC_URL为/static/ ,那么你应该:

  1. 运行collectstatic管理命令

  2. 配置 Nginx 在 /static/ 上提供 /home/coat/www/site/app/static/,即:

    location ^~ /static/ {
    alias /home/coat/www/site/app/static/;
    }
  3. 重新加载nginx

关于python - 带有 ./manager runserver 的 Django 运行良好,而 Django + uwsgi 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com