nginx Django管理界面在生产环境中缺少CSS样式

ruoxqz4g  于 2023-08-03  发布在  Nginx
关注(0)|答案(3)|浏览(118)

用户界面运行良好,所有的CSS样式和静态文件都能正确提供,但管理界面缺少CSS样式。我看了类似的帖子,但在这些帖子中,人们对用户和管理界面都有问题。我的问题只是管理界面。
请查看下面来自settings.py的静态文件设置:

STATIC_URL = '/static/'

#Location of static files
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]

STATIC_ROOT  = os.path.join(BASE_DIR, 'staticfiles')

字符串
这是我的nginx配置:

server {
    listen 80;
    server_name MY_SERVER_IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/MYUSERNAME/myproject;
    }

    location /media/ {
        root /home/MYUSERNAME/myproject;
    }


我已经在服务器上执行了python manage.py collectstatic,并得到了以下消息:

0 static files copied to '/home/MYUSERNAME/myproject/staticfiles', 255 unmodified.


在那之后我重新启动了nginx,并尝试清空浏览器缓存,但问题仍然存在。

**如@Omar Siddiqui所要求的更多信息。**Using Django 3.2 My mysite/urls.py contains:

from django.contrib import admin
from django.urls import path, include

# Imports to configure media files for summernote editor
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('qa.urls')),
    path('summernote/', include('django_summernote.urls')),
    path('chatbot/', include('chatbot.urls')),
]

# Enable media files for summernote editor
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

sxissh06

sxissh061#

你可以尝试下面的步骤,让我知道它是否工作或不?

在settings.py文件中应用以下更改:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

字符串

从您的settings.py中删除以下行:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]

在生产中执行以下命令:

python manage.py collectstatic

更新如下nginx文件:

# prevent css, js files sent as text/plain objects
include /etc/nginx/mime.types;

server {
    listen 80;
    server_name MY_SERVER_IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        autoindex on;
        autoindex_exact_size off;
        root /home/MYUSERNAME/myproject;
    }

    location /media/ {
        autoindex on;
        autoindex_exact_size off;
        root /home/MYUSERNAME/myproject;
    }
}

说明:

  • STATIC_ROOT是使用python manage.py collectstatic后存储静态文件的文件夹
  • STATICFILES_DIRS是django将在其中搜索除static文件夹之外的其他静态文件的文件夹列表。

在本例中,我们关注的是与管理相关的CSS文件,这就是为什么我们使用STATIC_ROOT而不是STATICFILES_DIRS

ercv8c1e

ercv8c1e2#

尝试将STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')更改为:

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

字符串
然后重新运行python manage.py collectstatic。这在过去对一些人是有效的

vs91vp4v

vs91vp4v3#

尝试在nginx中向静态位置传递别名,如下所示:

location /static/ {
    alias /home/MYUSERNAME/myproject/staticfiles/
}

字符串
别忘了重启nginx。

相关问题