> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markpdf.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Django

> Vista Django para convertir documentos.

# Django

## Vista

```python theme={null}
# views.py
import time
import requests
from django.conf import settings
from django.http import HttpResponse, JsonResponse

API_URL = settings.FLASH_MD_API_URL  # "https://api.markpdf.tech"
API_KEY = settings.FLASH_MD_API_KEY


def poll_job(job_id: str) -> str:
    while True:
        time.sleep(5)
        res = requests.get(
            f"{API_URL}/jobs/{job_id}",
            headers={"x-api-key": API_KEY},
            timeout=30,
        )
        data = res.json()
        if data["status"] == "completed":
            return data["body"]
        if data["status"] == "failed":
            raise Exception(data.get("error", "Job failed"))


def convert_document(request):
    if request.method != "POST":
        return JsonResponse({"error": "POST only"}, status=405)

    uploaded = request.FILES.get("file")
    if not uploaded:
        return JsonResponse({"error": "Missing file"}, status=400)

    res = requests.post(
        f"{API_URL}/convert/raw",
        params={"filename": uploaded.name, "mode": "fast"},
        headers={
            "x-api-key": API_KEY,
            "content-type": uploaded.content_type or "application/octet-stream",
        },
        data=uploaded.read(),
        timeout=300,
    )

    if res.status_code == 200:
        return HttpResponse(res.text, content_type="text/markdown; charset=utf-8")

    if res.status_code == 202:
        job = res.json()
        markdown = poll_job(job["job_id"])
        return HttpResponse(markdown, content_type="text/markdown; charset=utf-8")

    return HttpResponse(res.text, status=res.status_code)
```

## URL

```python theme={null}
# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path("api/convert/", views.convert_document),
]
```

## Settings

```python theme={null}
# settings.py
FLASH_MD_API_URL = "https://api.markpdf.tech"
FLASH_MD_API_KEY = os.environ["FLASH_MD_API_KEY"]
```
