프로젝트

일반

사용자정보

Actions

새기능 #14

진행중

Django Framework + mkdoc 연동

minkyu park이(가) 4달 전에 추가함. 4달 전에 수정됨.

상태:
신규
우선순위:
보통
담당자:
시작일:
2025/09/03
완료일:
진척도:

0%

추정시간:

설명

Django Framework + mkdoc 연동

참고 : https://www.hacksoft.io/blog/integrating-a-password-protected-mkdocs-in-django?ht-comment-id=6897299
예전 버전이라 새로운 버전으로 다시 연동

1. docs 앱 생성

python manage.py startapp docs

2. mkdocs 설치 및 초기화

pip install mkdocs
mkdocs new mkdocs

3. 디렉토리 구조 정리

디렉토리 구조 정리 MkDocs 관련 파일을 Django 루트로 옮겨서 mkdocs.yml과 가 index.md와 manage.py같은 위치에 있도록 정리

mv mkdocs/mkdocs.yml .
mv mkdocs/docs/index.md mkdocs/
rm -r mkdocs/docs
  • mkdocs.yml 설정
site_name: My Docs

theme:
  name: mkdocs
docs_dir: 'mkdocs'
site_dir: 'docs/static/mkdocs_build'

nav:
  - Home: index.md

4. Django에서 mkdocs 서빙

1. docs/views.py 작성

import os
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import FileResponse, Http404

# @login_required
def serve_docs(request, path='index.html'):
    build_root = os.path.join(settings.BASE_DIR, 'docs', 'static', 'mkdocs_build')
    full_path = os.path.join(build_root, path)

    if os.path.isdir(full_path):
        full_path = os.path.join(full_path, 'index.html')

    if not os.path.exists(full_path):
        raise Http404(f"File not found: {path}")

    print(f"Serving file: {full_path}")
    return FileResponse(open(full_path, 'rb'))

2. docs/urls.py

from django.urls import re_path
from .views import serve_docs

urlpatterns = [
    re_path(r'^(?P<path>.*)$', serve_docs),
]

3. settings/urls.py 수정

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('docs/', include('docs.urls')),
]

5. mkdocs 빌드

mkdocs build
Actions

내보내기 Atom PDF