为什么我的django管理站点没有css样式

时间:2010-12-12 04:15:44

标签: css django admin

我使用django development version

创建一个django管理站点

但它没有css样式:

alt text

我能做什么。

感谢

21 个答案:

答案 0 :(得分:51)

设置STATIC_ROOTSTATIC_URL后,您可能需要运行

python manage.py collectstatic

答案 1 :(得分:16)

ADMIN_MEDIA_PREFIX现已弃用,请改用STATIC_URL。在settings.py中设置STATIC_URL = '/static/'应该可以胜任。尝试:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

然后:

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

适用于Django 1.4 pre-alpha SVN-16920。

答案 2 :(得分:14)

Django不会自己提供静态文件。你必须告诉它文件的位置。

ADMIN_MEDIA_PREFIX in the settings.py会将Django指向正确的位置。

由于您使用的是开发版,因此您需要dev-specific document for static files how-to。 Adam的链接将引导您进入1.2版本。

答案 3 :(得分:9)

我在Django Book Tutorial之后也遇到了这个问题。 在第5章|安装模型中,本书在引用默认的INSTALLED_APPS时说明了 “通过在他们面前放置一个哈希字符(#),暂时注释掉所有这六个字符串。” http://www.djangobook.com/en/2.0/chapter05.html

然后,在第6章中,本书告诉读者取消注释这6行中的4行 - “请注意,我们在第5章中注释掉了这四个INSTALLED_APPS条目。现在取消注释它们。”

但是,statcifiles行是将CSS恢复到管理页面所需的内容,因此取消注释     'django.contrib.staticfiles',

答案 4 :(得分:7)

我读了几个试图解决这个问题的其他线程......就像其他线程一样使用别名。 这假设您自己的自定义应用正确提供静态文件,这表明您的STATIC_ROOT和STATIC_URL具有正确的设置。

STATIC_ROOT = ''
STATIC_URL = '/static/'

然后(从你的静态目录):

ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin

希望这有助于某些人...这个主题有很多主题。 :(

答案 5 :(得分:4)

我花了两天的时间为此感到头疼!

最后,将settings.py文件中的DEBUG改为:

<块引用>

调试 = 真

它奏效了。

PS -

<块引用>

安全警告:不要在生产中打开调试运行!

答案 6 :(得分:3)

/project_name/project_name/settings.py中,您需要设置STATIC_URL以告知您的网站用于静态文件的网址。

然后将STATIC_ROOT设置为文件系统上的某个文件夹,该文件夹与STATICFILES_DIRS列表中列出的任何目录不同。

设置STATICFILES_ROOT后,您将从项目目录运行python manage.py collectstatic

这将复制STATICFILES_DIRS列表中列出的所有管理静态文件和所有其他文件夹中的所有文件。基本上,这会将您的所有静态文件放在一个位置,这样您就可以在部署站点时将它们移动到CDN。如果你像我一样没有CDN,那么你有两个选择:

  1. 将您设置为STATIC_ROOT的文件夹添加到STATICFILES_DIRS列表中。这将允许django中的静态文件查找程序找到所有静态文件。
  2. 将整个静态文件夹移到文件系统的其他位置,并指示STATICFILES_DIRS包含该新位置。
  3. 我对这个答案的安全性没有任何评论,这只是我用我的web服务器为小项目开发的方式。如果你做的更大规模,我希望你会想要一个django建议的CDN。

    更新: 我刚遇到这个问题,这种方法并没有完全按照我的想法去做。最终为我工作的是在我运行collectstatic之后我将它放入STATICFILES_ROOT的管理静态文件复制到我用于自己的静态文件的目录中。这解决了我的问题。

答案 7 :(得分:3)

除了许多其他有用的答案外,我还有一个尚未注意到的问题。从Django 1.3升级到1.6后,我的静态文件目录中有一个破坏了django管理静态文件的符号链接。

我的settings.py配置为:

STATICFILES_DIRS = (
    '/var/www/static/my-dev',
)

根据this answer

  

Django现在希望在URL下找到admin静态文件   /管理/.

我有一个符号链接/var/www/static/my-dev/admin,设置为:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/

django 1.6中不再存在该位置,因此我将链接更新为:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/

现在我的管理网站工作正常。

答案 8 :(得分:2)

如果您使用Apache服务器来托管django站点,则需要确保静态别名指向/ site到site / site_media / static /的目录。如果您的静态文件位于site / site / site_media / static /的/目录中,则以前的Apache别名配置将不起作用。

答案 9 :(得分:2)

在遵循Django教程时,我遇到了类似的问题,在我的情况下,问题是开发服务器在提供css文件时使用的mimetype。

服务的mimetype是&#39; application / x-css&#39;导致Chrome中出现以下警告消息(在“开发者”工具的“网络”标签中):

  

资源解释为样式表但使用MIME类型传输   application / x-css:&#34; http://127.0.0.1:8000/static/admin/css/base.css&#34;

我找到的解决方法:通过在django webapp的manage.py文件中添加以下行来更改要提供的mimetype:

import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'

注意:使用Django 1.7.4在Python 2.7和Chrome 40.0上为我工作

答案 10 :(得分:2)

在使用通用系统级python解释器之前,通过为项目创建新的虚拟环境解决了我的问题。

$ mkvirtualenv myproject

参考:https://docs.djangoproject.com/en/2.1/howto/windows/

答案 11 :(得分:1)

在django-1.10.5和python-2.7.13中开发网站时遇到的同类问题。但是在我的firefox-51和chrome中,登录页面能够获得css,但仍然没有样式。但奇怪的是,它正在开发IE-8 ..

我尝试过这里提到的所有可能的东西,并且适合我的sw版本。没有工作。

但是当我在其他具有python-2.7.8的系统上尝试相同的网站时,它工作了..

刚刚发布,如果它可以帮助某人...

编辑:后来我发现在python-2.7.13中,在settings.py中编写以下两行(加上清除浏览器的缓存)已经完成了这个伎俩

array_intersect

答案 12 :(得分:1)

确保'django.contrib.staticfiles'位于您的settings.py中的INSTALLED_APPS

答案 13 :(得分:0)

尝试了数千条建议后失败了,我终于找到了一个有帮助的解决方案。这是我尝试过的和正在使用的。 我正在使用django-1.11和nginx Web服务器。 首先,我确保我的CSS / js文件在浏览器的控制台中未获取404。之后,我会看到警告

  

资源被解释为样式表,但通过mime类型的text / plain转移

我在管理模板中找到了base.html并删除了

type="text/css"

现在这些行如下所示:

<link rel="stylesheet"  href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" /> 

这为我解决了这个问题。

答案 14 :(得分:0)

如果您在settings.py中为STATICFILES_DIRS设置了值,并且声明的文件夹不存在或位置错误,则会导致管理员没有样式 例如 通过定义 STATICFILES_DIRS =(os.path.join(BASE_DIR,&#34; static&#34;)) 并且静态文件夹不存在

答案 15 :(得分:0)

运行:python manage.py collectstatic

将此行添加到位于/etc/apache2/sites-available/000-default.conf的Vhost中

  

别名/ static / admin / /var/www/html/example.com/static/admin

这是Django设置的整个Vhost设置

<VirtualHost *:80>
        ServerName gautam.tech
        ServerAlias www.gautam.tech

        WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
        WSGIProcessGroup gautam.tech
        #Your static files location
        Alias /static /var/www/html/gautam.tech/static
        Alias /media/ /var/www/html/gautam.tech/media
        Alias /static/admin/ /var/www/html/gautam.tech/static/admin

        <Directory /var/www/html/gautam.tech/static>
                Require all granted
        </Directory>

        <Directory /var/www/html/gautam.tech/media>
                       Require all granted
        </Directory>

        WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py

        DocumentRoot /var/www/html/gautam.tech
        <Directory /var/www/html/gautam.tech>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        CustomLog /var/www/html/gautam.tech/access.log combined
        ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>

这肯定可以工作!

答案 16 :(得分:0)

问题出在开发/测试/生产服务器中,并使用Nginx,请按照以下步骤操作。

  • 将settings.py中的配置设置为以下内容

    STATIC_URL = '/static/'
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
  • 运行以下命令在静态文件夹中创建css和js文件

    $ python manage.py collectstatic
    
  • / etc / nginx / sites-enabled / example(Nginx)中的
  • config配置以提供静态文件

    location /static/ {
            alias /project/root/folder/static/;
    }
    

答案 17 :(得分:0)

配置静态文件 确保您的 INSTALLED_APPS 中包含django.contrib.staticfiles

在您的settings.py文件中,定义STATIC_URL,例如:

STATIC_URL = '/static/'

了解更多详情 static files

答案 18 :(得分:0)

管理面板运行正常,但未加载CSS。这适用于使用Apache的Lightsail Django

1。在<template> <div class="home"> <button @click="showNotifs">Show notification</button> </div> </template> <script lang="ts"> import { defineComponent, inject } from 'vue'; import { INotify, injectionKeyNotifier } from 'my-custom-notifier'; export default defineComponent({ name: 'Home', setup() { const notify = inject(injectionKeyNotifier) as INotify; function showNotifs() { notify('You have x unread messages.'); } return { showNotifs } } }) </script>

中定义STATIC_ROOT和STATIC_URL
settings.py

2。将管理资产文件弹出(复制)到项目中

运行STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/' STATIC_URL = '/static/' 此命令使用python manage.py collectstatic /opt/bitnami/projects/decisions/decision/admin css/ fonts/个子文件夹创建img/文件夹

3。使/ static url可从apache中访问

将此代码段粘贴到js/中(如果已设置ssl,则文件位置将为/opt/bitnami/apache2/conf/bitnami/bitnami.conf

/opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf

4。不要忘记重启apache

Alias /static/ "/opt/bitnami/projects/decisions/decision/"
<Directory "/opt/bitnami/projects/decisions/decision/">
    Order allow,deny
    Options Indexes
    Allow from all
    IndexOptions FancyIndexing
</Directory>

答案 19 :(得分:0)

我看到有很多答案,但没有一个对我有用,所以我发布了自己的答案。 为我解决的是将静态文件 URL 添加到应用程序的根 URL。我需要将此网址添加到我的网址列表中:

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

您还需要两个导入:

from django.conf import settings
from django.conf.urls.static import stati

可以在此 article 中查看更多内容。

答案 20 :(得分:-1)

这很好并且很容易。我(手动)移动了文件夹。只需从主项目的目录中复制static/admin并将其粘贴到 public_html static/(如果没有静态文件夹,则必须在终端中运行以下命令< / p>

python manage.py collectstatic

在这里,您可以使用Django管理员的CSS工作