여는 글
입학지원팀 llm프로젝트를 진행하면서 특정 pdf 페이지를 웹페이지로 출력하는 기능이 필요해, 이를 구현한 기록을 하려
이 글을 쓰게되었다.
원하는 pdf페이지를 웹 페이지에 바로 띄워보는 간단한 코드를 작성해보자
코드
1. media 루트 설정
- settings.py
MEDIA_URL = "media/"
MEDIA_ROOT = BASE_DIR / "media"
- urls.py
urlpatterns = [
re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
path(r'swagger', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
path(r'redoc', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc-v1'),
# main
path("admin/", admin.site.urls),
path("maruegg/", include("maruegg.urls")),
path("accounts/", include("accounts.urls")),
path("", TemplateView.as_view(template_name="base.html"), name="root"),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
=> 다음과 같이 파일처리를 위해서 media관련 settings.py설정과 본 프로젝트 urls.py 설정을 진행하자.
2. media폴더에 test할 pdf파일 드래그앤드롭
=> 이렇게 media/files 안에 test할 pdf파일을 두자
3. view 생성
def pdf_link(request, page=1):
pdf_url = os.path.join(settings.MEDIA_URL, 'files/2024정시모집요강.pdf')
return render(request, 'maruegg/pdf_link.html', {'pdf_url': pdf_url, 'page': page})
=> 이렇게 뷰를 작성하고
=> 이렇게 url설정해준다.
4. pdf_link.html작성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PDF Link Example</title>
</head>
<body>
<h1>PDF Link Example</h1>
<a href="{{ pdf_url }}#page={{ page }}" target="_blank">{{ page }} 페이지로 이동하기</a>
</body>
</html>
=> test할 html파일도 만들어준다.
결과
=> pdf_link/10->(특정 이동하고 싶은 페이지 아무거나) 로 url입력하고 아래 하이퍼링크를 클릭하면
=> 정상적으로 페이지 이동이 가능하다!!
html파일을 거치지 않고 다이렉트 연결을 원한다면?
def pdf_direct_link(request, page):
pdf_url = os.path.join(settings.MEDIA_URL, 'files/2024정시모집요강.pdf')
full_url = f"{pdf_url}#page={page}"
logger.debug(f"Redirect page: {full_url}")
return redirect(full_url)
=> 이 코드를 사용하면 된다.
'DJango' 카테고리의 다른 글
배포한 프로젝트 https적용 후 swagger작동이 안되는 문제 해결방법 (0) | 2024.08.11 |
---|---|
Django 프로젝트 goolge 로그인 구현하기 (0) | 2024.07.16 |
DJango프로젝트에 MySQL 연결하기 (0) | 2024.07.14 |
[AWS] RDS서비스로 MySQL DB생성 및 테스트까지-(free티어 설정으로 과금없이 안전하게 생성하고 사용해보자) (0) | 2024.07.13 |
[AWS 배포] DJango 프로젝트 AWS로 완벽하게 배포하기 (0) - 배포전 프로젝트 환경 세팅하기 (필수) (0) | 2024.07.09 |