>  기사  >  백엔드 개발  >  Django 학습에서 정적 파일 호출에 대한 자세한 설명

Django 학습에서 정적 파일 호출에 대한 자세한 설명

不言
不言원래의
2018-05-08 13:44:031780검색

이 글은 Django 학습을 위한 정적 파일 호출에 대한 자세한 설명을 주로 소개합니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들은 참고할 수 있습니다.

정적 파일은 이 글은 주로 Django 학습에서 정적 파일 호출에 대한 관련 내용을 소개합니다. 아래에서는 자세히 설명하지 않겠습니다.

방법은 다음과 같습니다

1.settings.py 정적 파일 관련 샘플 코드 및 사용법:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
 
STATIC_URL = '/static/'
 
# 当运行 python manage.py collectstatic 的时候
# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
# 把这些文件放到一起是为了用apache等部署的时候更方便
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
 
# 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT
# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, "common_static"),
 '/path/to/others/static/', # 用不到的时候可以不写这一行
)
 
# 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件
# 注意有先后顺序,找到了就不再继续找了
STATICFILES_FINDERS = (
 "django.contrib.staticfiles.finders.FileSystemFinder",
 "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

2.STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')#BASE_DIR是项目的绝对地址

STATIC_ROOT는 정적 파일을 배포합니다(pyhtonmanage.pycollectstatic). 모든 정적 정적 집계 디렉터리가

STATIC_ROOT는 절대 주소로 작성되어야 합니다. 예를 들어, 내 프로젝트 mysite는 /home/mysite/이고 STATIC_ROOT는 다음과 같습니다. /home/mysite/collect_static/

프로젝트를 배포할 때 터미널에 다음을 입력하세요.

python manage.py collectstatic

django는 모든 정적 파일을 STATIC_ROOT 폴더

3에 복사합니다. STATICFILES_DIRS

STATIC_ROOT만 작동합니다. 하지만 실제로는 일반적인 정적 파일 배치 위치가 두 군데 있습니다. 1. 하나는 각 앱에 새 정적 폴더를 만들고 그 안에 정적 파일을 넣는 것입니다. 예를 들어 To static files를 사용하면

django는 각 앱의 static 폴더를 자동으로 검색합니다. (따라서 폴더 이름을 잘못 쓰지 마세요. 그렇지 않으면 django가 폴더를 찾지 못합니다.

2. 또 다른 방법은, 모든 앱 파일 외부의 공용 폴더 일부 정적 파일은 특정 앱에 고유하지 않기 때문에 쉽게 관리할 수 있도록 공용 폴더에 넣을 수 있습니다. (공용 폴더를 만드는 것은 관리하기 쉬운 방법일 뿐입니다.) , 하지만 꼭 필요한 것은 아닙니다.

앱은 결국 모든 정적 파일이 STATIC_ROOT에 존재하기 때문에 앱 전체에 정적 파일을 적용할 수 있습니다. 이제 문제는 이를 만드는 방법입니다.

Django는 일부 정적 파일을 공개적으로 저장한다는 것을 알고 있습니다. 따라서 STATICFILES_DIRS

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)


STATICFILES_DIRS는 django에게 먼저 STATICFILES_DIRS에서 정적 파일을 찾은 다음 앱의 정적 폴더에 있는 각 검색으로 이동하도록 지시합니다. 첫 번째 파일을 찾으면 검색을 중지합니다.)

3.STATIC_URL

지금까지 정적 파일 메커니즘은 작동할 수 있지만 질문이 있습니다. 내 파일에 직접 액세스할 수 있습니까? URL을 통해 프로젝트를 진행하시겠습니까? 대답은 '예'입니다. 하지만 브라우저에서 액세스하고 있으므로 정적 파일의 로컬 절대 주소를 입력할 수 없습니다. 예를 들어 내 사진 중 하나의 로컬 주소는 /입니다. home/mysite/common_static/myapp/photo.png


그러면 다른 사람이 브라우저에 직접 입력하는 것이 불가능합니다:

http://192.168.1.2:8000/ home/mysite/common_static/myapp/photo.png


이 경우 브라우저는 해당 페이지가 없다는 오류를 보고합니다


그러면 Django는 브라우저가 서버의 정적 파일에 액세스하도록 어떻게 허용합니까? 앞서 언급했듯이 서버의 로컬 주소에 직접 액세스하는 것은 무엇입니까? 불가능하므로 Django는 STATIC_URL을 사용하여 브라우저가 다음과 같은 정적 파일에 직접 액세스할 수 있도록 합니다.

STATIC_URL = '/static/'

그런 다음 브라우저에 다음을 입력할 수 있습니다.

http://192.168.1.2:8000 /static/common_static/myapp/photo.png

그러면 /home/mysite/common_static/myap/photo.png

에 액세스하는 것과 동일합니다. 따라서 브라우저에서 접두사 STATIC_URL의 특정 콘텐츠를 사용하여 STATIC_ROOT를 매핑합니다. ,
HTTP://192.168.1.2:8000/static은 로컬 주소

의 STATIC_ROOT와 동일합니다. 관련 권장 사항:

Django의 STATIC_ROOT, STATIC_URL 및 STATICFILES_DIRS에 대한 간략한 분석

위 내용은 Django 학습에서 정적 파일 호출에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.