django 여러 앱 에서 static 파일 문 제 를 해결 합 니 다.

모든 앱 아래 에 자신의 static 폴 더 가 있 습 니 다.어떻게 설정 하면 혼용 되 지 않 습 니까?
다음은 실례 입 니 다.(제 프로젝트 에는 두 개의 앱 이 있 습 니 다.(login 과 main)
1.우선 setting 파일 에서 설정 경 로 를 수정 합 니 다.

STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, "MGStudio", "static"),
  os.path.join(BASE_DIR, "main", "static"),
  os.path.join(BASE_DIR, "login", "static"),
]
2.각 앱 의 static 에서 앱 이름 이 같은 폴 더 만 들 기
예 를 들 어 제 가 login/static/login/
스타일 JS CSS 등 넣 기
3.스타일 을 어떻게 호출 합 니까?

{% static 'main/img/firefox-logo-small.jpg' %}

{% static 'login/img/name.png' %}
추가 지식:Django 프로젝트 가 출시 된 후 xadmin 등의 정적 파일 문 제 를 불 러 올 수 없습니다.(django settings 의 static 설정 항목 의 관계)
대부분 static settings.py 설정 문제 입 니 다.
다른 app 의 static 를 설정 하지 않 으 면 불 러 올 수 없습니다.
1.settings.py 에 이렇게 설정 합 니 다.

STATIC_URL = '/static/'
#          static      ,                    .
#       ,   collectstatic    .
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')

#              
#           
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
  os.path.join(BASE_DIR, 'myapp', 'static'),
  os.path.join(BASE_DIR, 'userapp', 'static'),
  ]
위의 첫 번 째 는 프로젝트 루트 디 렉 터 리 아래 static 입 니 다.
다음 두 개 는 다른 app 의 static,my app,userapp 이 각각 다른 app 의 이름 입 니 다.
예 를 들 어 xadmin 에 static 이 있 으 면 더 해 야 합 니 다.
os.path.join(BASE_DIR, ‘xadmin', ‘static')
url 에 설정(주 url 에 여러 개 설정 되 어 있 으 면)

from blog.settings import STATIC_ROOT

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  
  #              
  url(r'^static/(?P<path>.*)/$', serve, {'document_root': STATIC_ROOT}),
2.프로젝트 디 렉 터 리 에서 실행
python manage.py collectstatic
이 때 방금 지정 한 static 를 디 렉 터 리 에 수집 합 니 다.
3.nginx 에 static 디 렉 터 리 경 로 를 방금 설정 한 static 1 로 설정 합 니 다.

    charset utf-8;
    location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8997;
      uwsgi_param UWSGI_SCRIPT blog.wsgi;
      uwsgi_param UWSGI_CHDIR /home/wwwblog/myblog/;
 
    }
    location /static/ {
    alias /home/wwwblog/myblog/static1/; #      
    }
다음은 관련 지식 학습.
django settings 의 static 설정 항목 의 관계
django 의 settings 에는 static 관련 설정 항목 이 세 개 포함 되 어 있 습 니 다.
STATIC_ROOT
STATIC_URL
STATICFILES_DIRS
STATIC_URL 이 이해 하기 쉽 습 니 다.정적 파일 에 비 친 url 입 니 다.보통/static/입 니 다.
STATICFILES_DIRS 는 각 app 의 static 디 렉 터 리 와 공공 static 디 렉 터 리 를 놓 는 목록 입 니 다.
STATIC_ROOT 는 전체 static 디 렉 터 리 로 명령 으로 static 파일 을 자동 으로 수집 할 수 있 습 니 다.
더 자세 한 설명:
STATIC_ROOT:manage.py collectstatic 을 실행 하면 정적 파일 이 복 사 될 디 렉 터 리 입 니 다.메모:프로젝트 의 정적 파일 을 이 디 렉 터 리 에 두 지 마 세 요.이 디 렉 터 리 는 collectstatic 을 실행 할 때 만 사용 할 수 있 습 니 다.저 는 처음에 당연 하 다 고 생각 했 어 요.이 디 렉 터 리 랑 MEDIA...ROOT 의 역할 은 같 아서 개발 환경 에서 정적 파일 을 찾 을 수 없다.
STATIC_URL:설정 한 static file 의 시작 url 입 니 다.이것 은 template 에서 만 참조 할 수 있 습 니 다.이 인자 와 MEDIAURL 의 의 미 는 많 지 않다.
STATICFILES_DIRS:각 app 의 static 디 렉 터 리 를 제외 하고 관리 해 야 할 정적 파일 위치,예 를 들 어 프로젝트 공공 정적 파일 의 차이 가 많 지 않 습 니 다.TEMPLATEDIRS 의 의 미 는 많 지 않다.
각 앱 아래 static/디 렉 터 리 에 있 는 정적 파일 django 의 개발 서버 는 자동 으로 찾 을 수 있 습 니 다.이 점 은 이전 앱 의 templates 디 렉 터 리 와 차이 가 많 지 않 습 니 다.
프로젝트 djangodemo 가 있다 고 가정 하면 두 개의 app 은 demo 1 과 demo 2 입 니 다.
django 에서 static 를 처리 하 는 방법 은 각 app 각자 의 static 를 한 곳 에 합 치 는 것 입 니 다.
예 를 들 면
djangodemo/djangodemo/static 공공 정적 파일 설치
djangodemo/demo 1/static 이 app 의 정적 파일 을 설치 합 니 다.
djangodemo/demo 2/static 이 app 의 정적 파일 을 설치 합 니 다.
이렇게 설정 할 수 있 습 니 다:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'static'),
 os.path.join(BASE_DIR, 'demo1', 'static'),
 os.path.join(BASE_DIR, 'demo2', 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')
사용 명령
python manage.py collectstatic
모든 정적 파일 을 자동 으로 STATIC 로 복사 합 니 다.ROOT(즉 static 1)중
admin 이나(xadmin)을 열 었 다 면 이 단 계 는 필요 합 니 다.그렇지 않 으 면 생산 환경 에 배치 할 때 스타일 파일 을 찾 을 수 없습니다.
django 여러 애플 리 케 이 션 을 해결 할 때 static 파일 의 문 제 는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기