【问题标题】:Django React Nginx serving admin static filesDjango React Nginx 提供管理静态文件
【发布时间】:2017-07-18 21:42:07
【问题描述】:

我觉得问一个之前已经回答过的问题有点尴尬 - 但是我觉得让 node 提供静态文件而不是 django 有一点不同。由 webpack 捆绑并由节点提供的 css 工作没有问题,我遇到的问题是使用 get_static_prefix 装饰器提供管理 css 和另外几个其他文件。

文件结构如下:

root
    |
     public
        - templates
        - static
             | <-- collectstatic adding files here
        - vendor
    |
      server
        - app1
        - app2
             | settings.py        

/etc/nginx/sites-available/项目

 server {
     listen xxx.xxx.xxx.xxx:8000;
     server_name xxx.xxx.xxx.xxx;
     location /static {
            alias /root/se/env/public/static/;
    }
}

以及settings.py中的设置

STATIC_URL = '/root/se/env/public/static/'
MEDIA_URL = '/media/'
STATIC_ONLY_URL = '/static_only/'

if not DEBUG:
    MEDIA = '/media',
    STATIC_ROOT = '/root/se/env/public/static/'
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'public', 'media')
    STATICFILES_DIRS = '/root/se/env/public/vendor/static/',

我一直在兜圈子。我对 Django 很陌生,并不真正了解它是如何工作的。据我所知, STATICFILES_DIRS 是 collectstatic 从中收集静态文件的地方,而 STATIC_ROOT 是运行 collectstatic 后转储静态文件的地方。我认为 STATIC_URL 是我出错的地方 - 但我没有太多运气弄清楚它。

就目前而言,当 DEBUG = True 时,admin css 也无法正常工作,所以我配置错误。结果是:

Not Found: /static/admin/css/base.css

【问题讨论】:

  • 您是否尝试将 STATIC_URL 更改为“/static/”?还可以尝试将 nginx 位置 /static 更改为 /static/。
  • @Kamal - 感谢您的回复。我已经尝试过了,但仍然一无所获。我已经用更多信息更新了这个问题。

标签: python css django nginx


【解决方案1】:

您的location /static 错误。 alias 指令在形成路径名时替换部分 URI。 location 参数和alias 参数都应该以/ 结尾,或者都不以/ 结尾:

location /static {
    alias /root/se/env/public/static;
}

或:

location /static/ {
    alias /root/se/env/public/static/;
}

事实上,因为alias 参数以location 参数结尾,所以您根本不应该使用alias 指令。见the alias documentation末尾的说明。

location /static {
    root /root/se/env/public;
}

【讨论】:

  • 很好,谢谢。我还没有设法让管理员 css 显示为 prod 但这让我更近了一步。
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 2021-12-02
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2012-03-19
  • 2011-01-27
相关资源
最近更新 更多