django 여러 앱 에서 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 파일 의 문 제 는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.