Django 개발 버전을 사용하여 Django 관리 사이트를 만듭니다.
그러나 CSS 스타일이 없습니다.
어떡해?
감사
답변:
Django는 자체적으로 정적 파일을 제공하지 않습니다. 파일이 어디에 있는지 알려 주어야합니다.
settings.py 의 ADMIN_MEDIA_PREFIX는 Django를 올바른 위치로 가리 킵니다.
개발 버전을 사용하고 있으므로 정적 파일 방법에 대한 개발 별 문서가 필요합니다 . Adam의 링크는 1.2 버전으로 연결됩니다.
STATIC_ROOT
및을 설정 한 후 STATIC_URL
다음을 실행해야 할 수 있습니다.
python manage.py collectstatic
STATIC_ROOT
and STATIC_URL
에 대해 동일한 이름 을 사용해야 합니다 . 예 : I 결합 "staticfiles" 및 "static" , used STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
및 STATIC_URL="/static/"
. 내 앱이 제대로 작동했지만 관리자 파일을 찾을 수 없습니다. 그러니 둘 다 "staticfiles" 또는 "static"으로 변경하십시오
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에서 작동합니다.
static/admin
내부 로 (수동으로) 이동 static/css/
하면 css 파일에 액세스 할 수 있습니다. 그래서 안에있는 경우에만 CSS 파일에 액세스 할 수 static/files
있지만 collectstatic이 거기에 넣지 않는 것 같습니다. 물론, 수동으로 폴더를 이동하는 것은 템플릿이 static/admin
.
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/
이제 내 관리 사이트가 제대로 작동합니다.
Django 튜토리얼을 따르는 동안 비슷한 문제가 있었고 제 경우 문제는 css 파일을 제공 할 때 개발 서버에서 사용하는 MIME 유형이었습니다.
제공된 mimetype은 '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로 저를 위해 일했습니다.
Content-Type: text/plain
페이지에 렌더링되지 않는다고 말합니다.
django-1.10.5 및 python-2.7.13에서 사이트를 개발하는 동안 발생한 동일한 종류의 문제입니다. 그러나 내 firefox-51과 크롬에서 로그인 페이지는 CSS를 얻을 수 있었지만 여전히 스타일링이 없었습니다. 하지만 이상하게도 IE-8에서 작동하고있었습니다 ..
나는 여기에 언급 된 가능한 모든 것을 시도했고 내 sw 버전에 적합했다. 작동하지 않았습니다.
하지만 python-2.7.8이있는 다른 시스템에서 동일한 사이트를 시도했을 때 작동했습니다 ..
누군가에게 도움이 될 수 있다면 방금 게시했습니다 ...
편집 : 나중에 python-2.7.13에서 settings.py에 다음 두 줄을 작성하고 브라우저의 캐시를 지우면 트릭을 수행했음을 발견했습니다.
import mimetypes
mimetypes.add_type("text/css", ".css", True)
내 문제는 일반 시스템 수준의 파이썬 인터프리터를 사용하기 전에 프로젝트에 대한 새로운 가상 환경을 만들어 해결되었습니다.
$ mkvirtualenv myproject
운영: python manage.py collectstatic
/etc/apache2/sites-available/000-default.conf에있는 Vhost에이 행을 추가하십시오.
별칭 / static / admin / /var/www/html/example.com/static/admin
다음은 장고 설정을위한 전체 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>
이것은 확실히 작동합니다!
STATICFILES_DIRS에 대한 settings.py에 설정된 값이 있고 선언 된 폴더가 존재하지 않거나 잘못된 위치에있는 경우 관리자가 스타일을 지정하지 않게됩니다 (예 : STATICFILES_DIRS = (os.path.join (BASE_DIR, "static") )) 및 정적 폴더가 존재하지 않습니다.
수천 가지 제안을 시도한 후 실패한 결과 마침내 도움이되는 솔루션을 찾았습니다. 여기 내가 시도한 것과 내가 사용하고 있던 것입니다. django-1.11 및 nginx 웹 서버를 사용하고 있습니다. 첫째, 내 CSS / js 파일이 브라우저 콘솔에서 404를 얻지 못하도록했습니다. 그 후 나는 경고를 볼 수 있었다
스타일 시트로 해석되지만 MIME 유형 텍스트 / 일반으로 전송 된 리소스
관리 템플릿에서 base.html을 발견하고 제거했습니다.
type="text/css"
이제 선은 다음과 같습니다.
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
이것은 나를 위해 문제를 해결했습니다.
문제는 dev / test / prod 서버에 있고 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)의 구성
location /static/ {
alias /project/root/folder/static/;
}
이것은 훌륭하고 쉽게 작동합니다. 폴더를 (수동으로) 이동했습니다. static/admin
메인 프로젝트의 디렉토리에서 복사하여 public_html에 붙여 넣기 만하면 static/
됩니다. 터미널에서 다음 명령을 실행해야합니다.
python manage.py collectstatic
여기 Django 관리자의 CSS 작업으로 이동합니다.
정적 파일 구성 INSTALLED_APPS에django.contrib.staticfiles
포함되어
있는지 확인하십시오 .
settings.py 파일에서 STATIC_URL을 정의합니다. 예를 들면 다음과 같습니다.
STATIC_URL = '/static/'
자세한 내용은 정적 파일