내 장고 관리 사이트에 CSS 스타일이없는 이유
Django 개발 버전을 사용하여 Django 관리 사이트를 만듭니다.
그러나 CSS 스타일이 없습니다.
어떡해?
감사
Django는 자체적으로 정적 파일을 제공하지 않습니다. 파일이 어디에 있는지 알려 주어야합니다.
settings.py 의 ADMIN_MEDIA_PREFIX는 Django를 올바른 위치로 가리 킵니다.
개발 버전을 사용하고 있으므로 정적 파일 방법에 대한 개발 별 문서를 원할 것 입니다. Adam의 링크는 1.2 버전으로 연결됩니다.
STATIC_ROOT
및을 설정 한 후 STATIC_URL
다음을 실행해야 할 수 있습니다.
python manage.py collectstatic
ADMIN_MEDIA_PREFIX
지금은 더 이상 사용되지 않으므로 STATIC_URL
대신 사용하십시오. 설정 STATIC_URL = '/static/'
settings.py에서하는 일을해야한다. 시험:
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에서 작동합니다.
Django Book Tutorial에 따라이 문제에 직면했습니다. 5 장 | 모델 설치에서 책은 기본 INSTALLED_APPS를 참조 할 때 "해시 문자 (#)를 앞에 넣어 일시적으로 6 개의 문자열을 모두 주석 처리합니다."라고 말합니다. http://www.djangobook.com/en/2.0/chapter05.html
그런 다음 6 장에서이 책은 독자에게 6 개 행 중 4 개를 주석 해제하라고 말합니다. "5 장에서이 4 개의 INSTALLED_APPS 항목을 주석 처리했습니다. 지금 주석을 해제하십시오."
그러나 statcifiles 줄은 CSS를 관리 페이지로 복원하는 데 필요한 것이므로 'django.contrib.staticfiles'의 주석 처리를 제거하십시오.
나는 이것을 고치려고 여러 다른 스레드를 읽었습니다 ... 다른 스레드와 마찬가지로 별칭으로 정렬되었습니다. 이는 사용자 정의 앱이 정적 파일을 올바르게 제공하고 있다고 가정합니다. 이는 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
이것이 누군가에게 도움이되기를 바랍니다 ...이 주제에 대한 많은 스레드가 있습니다. :(
에서 정적 파일에 사용할 URL을 사이트에 알리 /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 파인더가 모든 정적 파일을 찾을 수 있습니다. - 정적 파일의 전체 폴더를 파일 시스템의 다른
STATICFILES_DIRS
위치로 이동하고 새 위치를 포함하도록 지시하십시오 .
나는이 대답으로 보안에 대해 언급하지 않습니다. 작은 프로젝트를 위해 웹 서버로 개발할 수 있었던 방법입니다. 나는 당신이 더 큰 규모의 일을한다면 django가 제안한 것처럼 CDN을 원할 것이라고 기대합니다.
업데이트 : 방금이 문제가 발생 했으며이 방법은 내가 원하는 것을 수행하지 못했습니다. 결국 나를 위해 일하게 된 것은 내가 실행 한 후 내 정적 파일에 사용했던 디렉토리에 collectstatic
넣은 관리자 정적 파일을 복사했습니다 STATICFILES_ROOT
. 그것은 나를 위해 문제를 해결했습니다.
다른 많은 답변이 유용했을뿐만 아니라 아직 언급되지 않은 문제가있었습니다. Django 1.3에서 1.6으로 업그레이드 한 후 정적 파일 디렉토리에 django 관리자 정적 파일에 대한 심볼릭 링크가 끊어졌습니다.
내 settings.py는 다음과 같이 구성되었습니다.
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
이 답변 에 따르면 ,
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/
이제 내 관리 사이트가 제대로 작동합니다.
Apache 서버를 사용하여 django 사이트를 호스팅하는 경우 정적 별칭이 site / site_media / static /에 대한 / directory를 가리키는 지 확인해야합니다. 정적 파일이 / directory to site / site / site_media / static /에 있으면 이전 Apache 별칭 구성이 작동하지 않습니다.
Django 튜토리얼을 따르는 동안 비슷한 문제가 있었고 제 경우에는 CSS 파일을 제공 할 때 개발 서버에서 사용하는 MIME 유형이 문제였습니다.
제공된 MIME 유형은 'application / x-css'로 Chrome에서 다음 경고 메시지를 표시했습니다 (개발자 도구의 '네트워크'탭에 있음).
스타일 시트로 해석되지만 MIME 유형 application / x-css로 전송 된 리소스 : " http://127.0.0.1:8000/static/admin/css/base.css "
내가 찾은 해결 방법 : django webapp의 manage.py 파일에 다음 줄을 추가하여 제공 할 mimetype 변경 :
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
참고 : Python 2.7 및 Chrome 40.0에서 Django 1.7.4로 저를 위해 일했습니다.
내 문제는 일반 시스템 수준의 파이썬 인터프리터를 사용하기 전에 프로젝트에 대한 새로운 가상 환경을 만들어 해결되었습니다.
$ mkvirtualenv myproject
참조 : https://docs.djangoproject.com/en/2.1/howto/windows/
settings.py 'django.contrib.staticfiles'
에 있는지 확인하십시오.INSTALLED_APPS
django-1.10.5 및 python-2.7.13에서 사이트를 개발하는 동안 발생한 동일한 종류의 문제. 그러나 내 firefox-51과 크롬에서 로그인 페이지는 CSS를 얻을 수 있었지만 여전히 스타일이 없었습니다. 하지만 이상하게도 IE-8에서 작동하고있었습니다 ..
나는 여기에 언급 된 가능한 모든 것을 시도했고 나의 sw 버전에 적합했다. 작동하지 않았습니다.
But when i tried the same site on other system which had the python-2.7.8, it worked..
Just posted if it may help someone...
edited: later I found that in python-2.7.13, writing the following two lines in settings.py (plus clearing the cache of the browser) had done the trick
import mimetypes
mimetypes.add_type("text/css", ".css", True)
If you have a value set in settings.py for STATICFILES_DIRS and the declared folder doesn't exist or in wrong location it will cause the Admin to have no styling e.g by defining STATICFILES_DIRS = ( os.path.join(BASE_DIR,"static")) and the static folder doesn't exist
Failing after trying 1000s of suggestions, I finally found a solution that helped. Here is what I tried and what I was using. I am using django-1.11 and nginx web server. Firstly, I made sure that my CSS/js files are not getting 404 in browser's console. After that, I could see a warning
Resource interpreted as Stylesheet but transferred with mime type text/plain
I found the base.html in admin templates and removed
type="text/css"
and now the lines looks like this:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
This fixed the issue for me.
run: python manage.py collectstatic
Add this line to Vhost which located at : /etc/apache2/sites-available/000-default.conf
Alias /static/admin/ /var/www/html/example.com/static/admin
Here is entire Vhost setting for django setup
<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>
This will work for sure!
In the issue is in a dev/test/prod server and using Nginx, please follow the below steps.
set the configs in settings.py as something below
STATIC_URL = '/static/' BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Run the below command to create css and js files in static folder
$ python manage.py collectstatic
config in /etc/nginx/sites-enabled/example (Nginx) to serve static files
location /static/ { alias /project/root/folder/static/; }
이것은 훌륭하고 쉽게 작동합니다. 폴더를 (수동으로) 이동했습니다. static/admin
메인 프로젝트의 디렉토리에서 복사하여 public_html에 붙여 넣기 만하면 static/
됩니다. 터미널에서 다음 명령을 실행해야합니다.
python manage.py collectstatic
여기 Django 관리자의 CSS 작업으로 이동합니다.
참고 URL : https://stackoverflow.com/questions/4420378/why-my-django-admin-site-does-not-have-the-css-style
'programing' 카테고리의 다른 글
Sublime Text 2에 대한 Sass 지원? (0) | 2020.11.10 |
---|---|
margin-top 작동하지 않음 clear : both (0) | 2020.11.08 |
주어진 파일에 대한 변경 사항을 포함하는 Git 브랜치 찾기 (0) | 2020.11.08 |
자체 종료 AWS EC2 인스턴스? (0) | 2020.11.08 |
Mac OS X에 JRE 1.7을 설치하고 Eclipse와 함께 사용하는 방법은 무엇입니까? (0) | 2020.11.08 |