Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的Django管理员没有使用css加载?_Python_Css_Django_Django Admin - Fatal编程技术网

Python 为什么我的Django管理员没有使用css加载?

Python 为什么我的Django管理员没有使用css加载?,python,css,django,django-admin,Python,Css,Django,Django Admin,我在Django中开发了一个web应用程序并进行了部署,然后我发现管理页面没有加载CSS。我在本地服务器中使用css获取管理页面,但在部署它时没有。 即使使用后 python manage.py collectstatic 它不是用css加载的 这是我的settings.py代码 从pathlib导入路径 导入操作系统 BASE_DIR=Path(_file__).resolve(strict=True).parent.parent 以下是静态文件链接部分: STATIC_URL = '/s

我在Django中开发了一个web应用程序并进行了部署,然后我发现管理页面没有加载CSS。我在本地服务器中使用css获取管理页面,但在部署它时没有。

即使使用后
python manage.py collectstatic
它不是用css加载的

这是我的settings.py代码

从pathlib导入路径
导入操作系统
BASE_DIR=Path(_file__).resolve(strict=True).parent.parent
以下是静态文件链接部分:

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

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'first_app/media')
我无法理解为什么即使在上面的代码之后它也没有链接css部分

Django版本:3.1 Python版本:3.8.3

有人能帮我吗
谢谢

Django在生产环境中不提供静态文件,您应该使用其他方法来使用apache2或nginx提供文件。如果您很好或者知道一些docker容器,这里有一个教程,解释如何部署Django

请在此查看django文件


请查看这篇文章,了解不带docker容器的apache2安装看起来不错。您可能需要在生产环境中再次运行
collectstatic

只需在此处执行一个技巧。运行collectstatic命令后,您将在staticfiles文件夹中获得管理员静态信息。只需将其剪切并粘贴到静态文件夹中,我不知道为什么Django在生产中不支持admin static。如果有人知道这一点,欢迎回答

将此代码添加到您的设置中。py

DEBUG = False
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
运行此命令后:

python manage.py collectstatic --noinput
并使用nginx或

并将staticfiles路径添加到您的webservice配置中 对于nginx这样的东西

location /static/ {
    alias /home/{{your project path }}/static/;
}

您没有提到您试图在哪台服务器上部署应用程序如果您在Heroku上部署应用程序,那么您需要安装whitenoise,我已经解释过了,但是如果您使用的是任何其他服务器,那么您可以回答这个问题,如果您在生产环境中,您必须运行:

python manage.py collectstatic--noinput

但是您还必须通过web服务器提供静态文件。最简单的方法是使用WhiteNoise:


这将与Nginx、Heroku等一起使用。因此,这是一个非常灵活的解决方案。

在settings.py中尝试以下操作:

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

STATIC_ROOT = BASE_DIR / 'staic'

MEDIA_ROOT = BASE_DIR / 'media'

STATICFILES_DIRS = [BASE_DIR / 'static']

您好,非常感谢您提供的解决方案,我会尽快为您更新Apache的这项工作吗?Bcoz正在ApacheYes上的AWS中部署它,请查看
Antonio Cangiano的这篇文章,但仍然没有更改,是否还有其他解决方案?现在使用nginx和docker您可以附加开发人员工具网络选项卡的屏幕截图吗?
STATIC_URL = '/static/'

MEDIA_URL = '/media/'

STATIC_ROOT = BASE_DIR / 'staic'

MEDIA_ROOT = BASE_DIR / 'media'

STATICFILES_DIRS = [BASE_DIR / 'static']