(documents_overview)=
# 문서 개요
이 페이지는 Wagtail 프로젝트에서 `'wagtail.documents'` 앱을 사용하는 기본 사항에 대한 개요를 제공합니다.
## `INSTALLED_APPS` 에 `'wagtail.documents'` 포함
`wagtail.documents` 앱을 사용하려면 Django 프로젝트 설정의 `INSTALLED_APPS` 목록에 포함해야 합니다. 다음과 같이 목록에 추가하기만 하면 됩니다.
```python
# settings.py
INSTALLED_APPS = [
# ...
'wagtail.documents',
# ...
]
```
## URL 설정
다음으로 `wagtail.documents` 앱에 대한 URL을 설정해야 합니다. 이 URL을 프로젝트의 기본 urls.py 파일에 포함할 수 있습니다. 이렇게 하려면 다음 줄을 추가하십시오.
```python
# urls.py
from wagtail.documents import urls as wagtaildocs_urls
urlpatterns = [
# ...
path('documents/', include(wagtaildocs_urls)),
# ...
]
```
새로 저장된 문서는 기본적으로 [참조 인덱스](managing_the_reference_index)에 저장됩니다.
## 페이지에서 문서 사용
Wagtail 페이지에 문서 파일을 포함하려면 페이지 모델에서 `FieldPanel` 을 사용할 수 있습니다.
다음은 예시입니다.
```python
# models.py
from wagtail.admin.panels import FieldPanel
from wagtail.documents import get_document_model
class YourPage(Page):
# ...
document = models.ForeignKey(
get_document_model(),
null=True,
blank=True,
on_delete=models.SET_NULL,
)
content_panels = Page.content_panels + [
# ...
FieldPanel('document'),
]
```
이를 통해 페이지를 생성하거나 편집할 때 문서 파일을 선택하고 페이지 템플릿에서 링크할 수 있습니다.
다음은 문서 필드에 액세스하고 렌더링하는 예제 템플릿입니다.
```html+django
{% extends "base.html" %}
{% block content %}
{% if page.document %}
문서: {{ page.document.title }}
파일 유형: {{ page.document.file_extension }}
문서 보기
{% else %}
이 페이지에 첨부된 문서가 없습니다.
{% endif %}
{{ page.body }}
{% endblock %}
```
## `RichTextFields` 내에서 문서 사용
문서 링크는 [`RichTextField`](rich_text_field)를 사용하여 페이지에서 만들 수 있습니다. 기본적으로 Wagtail은 문서에 링크를 추가하는 기능을 포함합니다. [](rich_text_features)를 참조하십시오.
`features` 를 `RichTextField` 에 전달하여 이를 제외하거나 포함할 수 있습니다. 아래 예제에서는 문서와 기본 서식만 포함하는 `RichTextField` 를 생성합니다.
```python
# models.py
from wagtail.fields import RichTextField
class BlogPage(Page):
# ...다른 필드
document_footnotes = RichTextField(
blank=True,
features=["bold", "italic", "ol", "document-link"]
)
panels = [
# ...다른 패널
FieldPanel("document_footnotes"),
]
```
## `StreamField` 내에서 문서 사용
`StreamField` 는 고정된 구조를 따르지 않는 페이지에 적합한 콘텐츠 편집 모델을 제공합니다. `StreamField` 를 사용하여 문서에 링크를 추가하려면 모델에 포함하고 `DocumentChooserBlock` 도 포함하십시오.
`doc` 이라는 `StreamField` 와 필드 내에 `doc_link` 라는 `DocumentChooserBlock` 이 있는 `Page` 모델을 생성합니다.
```python
# models.py
from wagtail.fields import StreamField
from wagtail.documents.blocks import DocumentChooserBlock
class BlogPage(Page):
# ... 다른 필드
documents = StreamField([
('document', DocumentChooserBlock())
],
null=True,
blank=True,
use_json_field=True,
)
panels = [
# ... 다른 패널
FieldPanel("documents"),
]
```
In `blog_page.html`, add the following block of code to display the document link in the page:
```html+django
{% for block in page.documents %}
{{ block.value.title }}
{% endfor %}
```
## 문서 및 컬렉션 작업
Wagtail의 문서는 [컬렉션](https://guide.wagtail.org/en-latest/how-to-guides/manage-collections/) 내에서 구성할 수 있습니다. 컬렉션은 관련 문서를 그룹화하는 방법을 제공합니다. 컬렉션 간에 문서를 교차 연결하고 사이트의 다른 부분을 통해 액세스할 수 있습니다.
다음은 예시입니다.
```python
from wagtail.documents import get_document_model
class PageWithCollection(Page):
collection = models.ForeignKey(
"wagtailcore.Collection",
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
verbose_name='문서 컬렉션',
)
content_panels = Page.content_panels + [
FieldPanel("collection"),
]
def get_context(self, request):
context = super().get_context(request)
documents = get_document_model().objects.filter(collection=self.collection)
context['documents'] = documents
return context
```
다음은 문서 컬렉션에 액세스하고 렌더링하는 예제 템플릿입니다.
```html+django
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block content %}
{% if documents %}
문서:
{% endif %}
{% endblock %}
```
## 문서 비공개 설정
특정 문서에 대한 액세스를 제한하려면 적절한 개인 정보 설정이 있는 컬렉션에 배치하여 비공개로 만들 수 있습니다(참조: [](image_document_permissions)).
비공개 컬렉션은 공개적으로 액세스할 수 없으며, 해당 콘텐츠는 적절한 권한이 있는 사용자만 사용할 수 있습니다.
## API 액세스
Wagtail의 문서는 `wagtail.documents.api.v2.views.DocumentsAPIViewSet` 를 통해 API로 액세스할 수 있습니다. 이를 통해 문서를 프로그래밍 방식으로 상호 작용하고, 세부 정보를 검색하고, 다양한 작업을 수행할 수 있습니다.
자세한 내용은 추가 정보 및 사용 예제를 제공하는 [API 섹션](api_v2_configure_endpoints)을 참조하십시오.