[django] Django는 정적 파일 URL을 볼 수 있습니다.

reportlab pdfgen을 사용하여 PDF를 작성하고 있습니다. PDF에는에 의해 생성 된 이미지가 drawImage있습니다. 이를 위해 이미지의 URL이나보기의 이미지 경로가 필요합니다. URL을 만들었지 만 이미지의 로컬 경로는 어떻게 얻습니까?

URL을 얻는 방법 :

prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"



답변

이것이 Google의 최고 결과이므로 다른 방법을 추가 할 것이라고 생각했습니다. 개인적으로 나는 이것을 장고 프레임 워크에 구현하기 때문에 이것을 선호합니다.

# Original answer said:
# from django.templatetags.static import static
# Improved answer (thanks @Kenial, see below)
from django.contrib.staticfiles.templatetags.staticfiles import static

url = static('x.jpg')
# url now contains '/static/x.jpg', assuming a static path of '/static/'


답변

당신이 (예 : “해시”취득한다 “스토리지 캐시의”장고 프로젝트와 정적 파일의 최종 URL 경로에 사용하는 경우 dyve의 대답은, 그러나, 좋은 하나입니다 style.aaddd9d8d8d7.css 에서 있는 style.css ) 그런 다음, 에 정확한 URL을 얻을 수 없습니다 django.templatetags.static.static(). 대신 템플릿 태그를 사용 django.contrib.staticfiles하여 해시 된 URL을 가져와야합니다.

또한 개발 서버를 사용하는 경우이 템플릿 태그 메소드는 해시되지 않은 URL을 반환하므로 개발 또는 프로덕션 호스트에 관계없이이 코드를 사용할 수 있습니다! 🙂

from django.contrib.staticfiles.templatetags.staticfiles import static

# 'css/style.css' file should exist in static path. otherwise, error will occur 
url = static('css/style.css')


답변

다른 방법이 있습니다! (장고 1.6에서 테스트)

from django.contrib.staticfiles.storage import staticfiles_storage
staticfiles_storage.url(path)


답변

기본 static태그를 사용하십시오 .

from django.templatetags.static import static
static('favicon.ico')

django.contrib.staticfiles.templatetags.staticfiles(답변에있는 것처럼 ) 다른 태그가 있지만 Django 2.0 이상에서는 더 이상 사용되지 않습니다.


답변

장고 3.0에서는 다음을 사용해야합니다 from django.templatetags.static import static.

from django.templatetags.static import static

...

img_url = static('images/logo_80.png')


답변

@dyve의 답변이 개발 서버에서 작동하지 않았습니다. 대신 나는 그것을 해결했다 find. 기능은 다음과 같습니다.

from django.conf import settings
from django.contrib.staticfiles.finders import find
from django.templatetags.static import static

def get_static(path):
    if settings.DEBUG:
        return find(path)
    else:
        return static(path)


답변

절대 URL (프로토콜, 호스트 및 포트 포함)을 얻으려면 request.build_absolute_uri다음과 같은 기능 을 사용할 수 있습니다 .

from django.contrib.staticfiles.storage import staticfiles_storage
self.request.build_absolute_uri(staticfiles_storage.url('my-static-image.png'))
# 'http://localhost:8000/static/my-static-image.png'