이 글은 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"
)
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_DIRSSTATIC_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에서 정적 파일을 찾은 다음 앱의 정적 폴더에 있는 각 검색으로 이동하도록 지시합니다. 첫 번째 파일을 찾으면 검색을 중지합니다.)
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은 로컬 주소
Django의 STATIC_ROOT, STATIC_URL 및 STATICFILES_DIRS에 대한 간략한 분석
위 내용은 Django 학습에서 정적 파일 호출에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!