(image_serve_view)= # 동적 이미지 제공 뷰 대부분의 경우, 파이썬에서 이미지 렌디션을 생성하려는 개발자는 `get_rendition()` 메서드를 사용해야 합니다. [](image_renditions)를 참조하십시오. 블로그나 모바일 앱과 같은 _외부_ 시스템용 이미지 버전을 생성해야 하는 경우, Wagtail은 고유한 URL을 호출하여 동적으로 이미지 렌디션을 생성하는 뷰를 제공합니다. 뷰는 URL에 이미지 ID, 필터 사양 및 보안 서명을 사용합니다. 만약 이러한 매개변수가 유효하면 해당 기준과 일치하는 이미지 파일을 제공합니다. `{% image %}` 태그와 마찬가지로 렌디션은 첫 번째 호출 시 생성되고 후속 호출은 캐시에서 제공됩니다. ## 설정 URL 구성에 뷰에 대한 항목을 추가하십시오. ```python from wagtail.images.views.serve import ServeView urlpatterns = [ ... re_path(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', ServeView.as_view(), name='wagtailimages_serve'), ... # wagtailimages_serve 라인이 기본 Wagtail 페이지 제공 경로 위에 오도록 합니다. re_path(r'', include(wagtail_urls)), ] ``` ## 사용법 ### 이미지 URL 생성기 UI 동적 제공 뷰가 활성화되면 관리자 인터페이스의 이미지 URL 생성기가 자동으로 사용 가능하게 됩니다. 이것은 편집 페이지에서 오른쪽의 "URL 생성기" 버튼을 클릭하여 액세스할 수 있습니다. 이 인터페이스를 통해 편집자는 이미지의 잘린 버전에 대한 URL을 생성할 수 있습니다. (dynamic_image_urls)= ### 파이썬에서 동적 이미지 URL 생성 동적 이미지 URL은 파이썬 코드를 사용하여 생성하고 API를 통해 클라이언트에 제공하거나 템플릿에서 직접 사용할 수도 있습니다. 템플릿에서 동적 이미지 URL을 사용하는 한 가지 장점은 `{% image %}` 태그처럼 렌더링하는 동안 초기 응답을 차단하지 않는다는 것입니다. `wagtail.images.views.serve` 의 `generate_image_url` 함수는 동적 이미지 URL을 생성하는 편리한 메서드입니다. 다음은 뷰에서 사용되는 예입니다. ```python def display_image(request, image_id): image = get_object_or_404(Image, id=image_id) return render(request, 'display_image.html', { 'image_url': generate_image_url(image, 'fill-100x100') }) ``` 이미지 작업은 `|` 문자로 연결하여 연결할 수 있습니다. ```python return render(request, 'display_image.html', { 'image_url': generate_image_url(image, 'fill-100x100|jpegquality-40') }) ``` 템플릿에서: ```html+django {% load wagtailimages_tags %} ... {% image_url page.photo "width-400" %} {% image_url page.photo "fill-100x100|jpegquality-40" %} {% image_url page.photo "width-400" "mycustomview_serve" %} ``` 이미지를 제공하는 데 사용할 선택적 뷰 이름을 전달할 수 있습니다. 기본값은 `wagtailimages_serve` 입니다. ## 고급 구성 (image_serve_view_redirect_action)= ### 뷰가 제공하는 대신 리디렉션하도록 만들기 기본적으로 뷰는 이미지 파일을 직접 제공합니다. 이 동작은 대신 301 리디렉션으로 변경할 수 있으며, 이는 이미지를 외부에 호스팅하는 경우 유용할 수 있습니다. 이를 활성화하려면 URL 구성에서 `ServeView.as_view()` 메서드에 `action='redirect'` 를 전달하십시오. ```python from wagtail.images.views.serve import ServeView urlpatterns = [ ... re_path(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', ServeView.as_view(action='redirect'), name='wagtailimages_serve'), ] ``` (image_serve_view_sendfile)= ## django-sendfile과의 통합 [django-sendfile](https://github.com/johnsensible/django-sendfile)은 이미지 데이터 전송 작업을 Django 애플리케이션에서 직접 제공하는 대신 웹 서버에 오프로드합니다. 이는 사이트에서 많은 이미지를 다운로드하지만 [캐싱 프록시](performance_frontend_caching) 또는 CDN을 사용할 수 없는 상황에서 서버 부하를 크게 줄일 수 있습니다. 먼저 django-sendfile을 설치 및 구성하고 웹 서버를 사용하도록 구성해야 합니다. 아직 수행하지 않은 경우 [설치 문서](https://github.com/johnsensible/django-sendfile#django-sendfile)를 참조하십시오. `SendFileView` 클래스를 사용하여 django-sendfile로 이미지를 제공할 수 있습니다. 이 뷰는 즉시 사용할 수 있습니다. ```python from wagtail.images.views.serve import SendFileView urlpatterns = [ ... re_path(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', SendFileView.as_view(), name='wagtailimages_serve'), ] ``` `SENDFILE_BACKEND` 설정에 정의된 백엔드를 재정의하도록 사용자 정의할 수 있습니다. ```python from wagtail.images.views.serve import SendFileView from project.sendfile_backends import MyCustomBackend class MySendFileView(SendFileView): backend = MyCustomBackend ``` 비공개 파일을 제공하도록 사용자 정의할 수도 있습니다. 예를 들어, 유일한 요구 사항이 인증되는 경우(Django >= 1.9): ```python from django.contrib.auth.mixins import LoginRequiredMixin from wagtail.images.views.serve import SendFileView class PrivateSendFileView(LoginRequiredMixin, SendFileView): raise_exception = True ```