【问题标题】:Django: ugly admin interfaceDjango:丑陋的管理界面
【发布时间】:2010-07-29 15:14:42
【问题描述】:

我在 Debian VM 上使用 Django,django 服务器是通过 nginx 加载的。到目前为止一切正常,除了管理界面。事实上,管理站点并没有加载界面的“外观”。似乎 Css 和图像根本没有加载,有什么想法吗?

谢谢。

【问题讨论】:

    标签: django django-admin nginx


    【解决方案1】:

    ADMIN_MEDIA_PREFIX 更改为您的媒体所在的位置。如果您没有复制媒体,请从存储 django 的任何地方复制它,那里有一个 media 和 admin 目录。

    类似问题:Django admin has no style

    【讨论】:

    • 不幸的是它没有成功...我尝试将管理文件夹从 /usr/local/lib/python-2.6/django/contrib/admin 复制到我的项目文件夹中并更新了 ADMIN_MEDIA_PREFIX到“./admin/media/”。停止 Django 服务器,重新启动 Nginx 并重新启动 Django 服务器...
    • 您如何提供静态文件?你的静态文件在哪里?你设置any了吗?这完全取决于您的配置。您没有为您的服务器设置提供足够的信息。我猜不出你是怎么设置的,因为有很多方法可以设置。此问题缺少正确回答的正确信息。
    • 我没有设置任何服务静态文件。所有请求都通过 FastCgi 提供给 Django,我的 nginx 配置如下所示:
    【解决方案2】:

    尝试添加媒体别名。在为 Apache 设置 nginx 代理时,我遇到了同样的问题,在添加媒体别名后,我解决了这个问题。

    这是我的 nginx 站点配置文件中的一个示例:

    location  /media/ {
       alias /opt/django-env/django_project/media/;
    }
    
    location /admin_media/ {
      alias /opt/django-env/lib/python2.6/site-packages/django/contrib/admin/media/;
    }
    

    【讨论】:

    • 还建议用'nginx'标记这个问题。
    • 听起来不错,但不幸的是,也没有成功……我现在对 Django 非常反感。我可以做一些好事,并且在本地 Django 服务器上一切正常,但是通过 nginx 让它似乎不是一个可靠的解决方案......
    • 这听起来不像是 Django 的问题,而是服务器配置的问题(诚然,第一次解决可能会很痛苦)。这对我来说是一个很好的资源:@​​987654321@ 我的建议是尝试从您的项目中访问媒体文件,例如mysite.com/site_media/styles/base.css - 我猜现在他们没有出现。只需关注将 URL 正确指向媒体文件的设置(Django,但主要是 nginx);最有可能与管理文件相同的问题。
    【解决方案3】:

    您可能设置了错误的 ADMIN_MEDIA_PREFIX 设置,或者根本没有将服务器设置为从该 URL 提供任何内容。如果您已正确设置所有这些,请确保您已将 Django 管理媒体复制(或链接)到您的项目。

    【讨论】:

    • 正如我对 meder 的回答,没有成功,还有其他想法吗?谢谢
    【解决方案4】:

    我没有设置任何服务静态文件。所有请求都通过 FastCgi 提供给 Django,我的 nginx 配置如下所示:

    服务器{

        listen   192.168.61.130:80; ## listen for ipv4
        ##listen   [::]:80 default ipv6only=on; ## listen for ipv6
    
        server_name  192.168.61.130;
    
        access_log  /var/log/nginx/localhost.access.log;
        error_log   /var/log/nginx/localhost.error.log;
    
        location / {
                root   /var/www/socratie;
                index  index.html index.htm;
                fastcgi_pass 127.0.0.1:8000;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                fastcgi_param REQUEST_METHOD $request_method;
                fastcgi_param QUERY_STRING $query_string;
                fastcgi_param SERVER_NAME $server_name;
                fastcgi_param SERVER_PORT $server_port;
                fastcgi_param SERVER_PROTOCOL $server_protocol;
                fastcgi_param CONTENT_TYPE $content_type;
                fastcgi_param CONTENT_LENGTH $content_length;
                fastcgi_pass_header Authorization;
                fastcgi_intercept_errors off;
        }
    

    【讨论】:

    • 你应该编辑最初的答案,而不是回答你自己的问题。