答案 0 :(得分:51)
设置STATIC_ROOT
和STATIC_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,那么你有两个选择:
STATIC_ROOT
的文件夹添加到STATICFILES_DIRS
列表中。这将允许django中的静态文件查找程序找到所有静态文件。STATICFILES_DIRS
包含该新位置。我对这个答案的安全性没有任何评论,这只是我用我的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
答案 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
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>
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工作