Django 管理站点未显示 CSS 样式
Django admin site not showing CSS style
我的 Django 管理网站(完全默认,未自定义)未显示预期 CSS。
看起来像这样:
我可以登录了:
但它应该是这样的:
我该如何解决这个问题?
其他可能有帮助的信息:
我 运行 在端口 80 上的 Amazon EC2 实例上并使用真实 URL 连接到它。我使用本教程进行设置:
http://www.nickpolet.com/blog/deploying-django-on-aws/1/
按照该教程,我将此代码放入名为 /etc/apache2/sites-enabled/mysite.conf
的文件中。我不明白这段代码在做什么,所以我认为它可能与问题有关。
/etc/apache2/sites-enabled/mysite.conf:
WSGIScriptAlias / /home/ubuntu/cs462/mysite/mysite/wsgi.py
WSGIPythonPath /home/ubuntu/cs462/mysite
<Directory /home/ubuntu/cs462/mysite/mysite>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
Alias /media/ /home/ubuntu/cs462/mysite/media/
Alias /static/ /home/ubuntu/cs462/mysite/static/
<Directory /home/ubuntu/cs462/mysite/static>
Require all granted
</Directory>
<Directory /home/ubuntu/cs462/mysite/media>
Require all granted
</Directory>
目录结构:
/home/ubuntu/cs462/
mysite/
manage.py
db.sqlite3
mysite/
__init__.py
__init__.pyc
settings.py
settings.pyc
urls.py
wsgi.py
homepage/
admin.py
admin.pyc
__init__.py
__init__.pyc
migrations
models.py
models.pyc
tests.py
views.py
settings.py的最后一部分:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
您的 Apache 配置要求所有静态内容(CSS、JS、图像等)都应位于 mysite/static 目录中。您应该首先将应用程序中的静态内容收集到 mysite/static 目录中:
cd /home/ubuntu/cs462/mysite
python manage.py collectstatic
更新:如果您没有为静态内容指定位置,您应该将以下行添加到您的 settings.py
:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
做完后
- python manage.py collectstatic
- 在settings.py中,在STATICFILES_DIRS变量中追加
('admin', os.path.join(BASE_DIR, 'static', 'admin'))。这应该有效
保持DEBUG=False
运行
pip 安装 whitenoise
输入settings.py
添加INSTALLED_APPS
'whitenoise.runserver_nostatic',
在MIDDLEWARE中添加如下:
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # add it exactly here
'django.contrib.sessions.middleware.SessionMiddleware',
不要更改以下语句:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
我的 Django 管理网站(完全默认,未自定义)未显示预期 CSS。
看起来像这样:
我可以登录了:
但它应该是这样的:
我该如何解决这个问题?
其他可能有帮助的信息:
我 运行 在端口 80 上的 Amazon EC2 实例上并使用真实 URL 连接到它。我使用本教程进行设置: http://www.nickpolet.com/blog/deploying-django-on-aws/1/
按照该教程,我将此代码放入名为 /etc/apache2/sites-enabled/mysite.conf
的文件中。我不明白这段代码在做什么,所以我认为它可能与问题有关。
/etc/apache2/sites-enabled/mysite.conf:
WSGIScriptAlias / /home/ubuntu/cs462/mysite/mysite/wsgi.py
WSGIPythonPath /home/ubuntu/cs462/mysite
<Directory /home/ubuntu/cs462/mysite/mysite>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
Alias /media/ /home/ubuntu/cs462/mysite/media/
Alias /static/ /home/ubuntu/cs462/mysite/static/
<Directory /home/ubuntu/cs462/mysite/static>
Require all granted
</Directory>
<Directory /home/ubuntu/cs462/mysite/media>
Require all granted
</Directory>
目录结构:
/home/ubuntu/cs462/
mysite/
manage.py
db.sqlite3
mysite/
__init__.py
__init__.pyc
settings.py
settings.pyc
urls.py
wsgi.py
homepage/
admin.py
admin.pyc
__init__.py
__init__.pyc
migrations
models.py
models.pyc
tests.py
views.py
settings.py的最后一部分:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
您的 Apache 配置要求所有静态内容(CSS、JS、图像等)都应位于 mysite/static 目录中。您应该首先将应用程序中的静态内容收集到 mysite/static 目录中:
cd /home/ubuntu/cs462/mysite
python manage.py collectstatic
更新:如果您没有为静态内容指定位置,您应该将以下行添加到您的 settings.py
:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
做完后
- python manage.py collectstatic
- 在settings.py中,在STATICFILES_DIRS变量中追加
('admin', os.path.join(BASE_DIR, 'static', 'admin'))。这应该有效
保持DEBUG=False
运行
pip 安装 whitenoise
输入settings.py
添加INSTALLED_APPS
'whitenoise.runserver_nostatic',
在MIDDLEWARE中添加如下:
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # add it exactly here
'django.contrib.sessions.middleware.SessionMiddleware',
不要更改以下语句:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')