programing

내 장고 관리 사이트에 CSS 스타일이없는 이유

nasanasas 2020. 11. 8. 10:10
반응형

내 장고 관리 사이트에 CSS 스타일이없는 이유


Django 개발 버전을 사용하여 Django 관리 사이트를 만듭니다.

그러나 CSS 스타일이 없습니다.

대체 텍스트

어떡해?

감사


Django는 자체적으로 정적 파일을 제공하지 않습니다. 파일이 어디에 있는지 알려 주어야합니다.

settings.pyADMIN_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이 없다면 두 가지 옵션이 있습니다.

  1. 당신이로 설정 한 폴더 추가 STATIC_ROOT받는 사람 STATICFILES_DIRS목록을. 이렇게하면 django의 staticfiles 파인더가 모든 정적 파일을 찾을 수 있습니다.
  2. 정적 파일의 전체 폴더를 파일 시스템의 다른 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

반응형