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'