# raconer/django-practice architecture

> Architecture diagram of the GitHub repository raconer/django-practice, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/raconer/django-practice
- Repository: https://github.com/raconer/django-practice

## Overview

This is a small Django practice project with one implemented API workflow: a GET request is routed to a content view that returns a success JSON response. The project also configures SQLite and custom 404/DRF exception handling, and exposes WSGI and ASGI server entry points. The README describes a basic Django project but does not document additional product capabilities; the graph therefore reflects only the visible runtime. Framework internals are external, and no database access by the content view is shown.

Main entry points: [`config/urls.py`](https://github.com/raconer/django-practice/blob/main/config/urls.py) (Root routes), [`config/settings.py`](https://github.com/raconer/django-practice/blob/main/config/settings.py) (Django settings), [`apps/content/urls.py`](https://github.com/raconer/django-practice/blob/main/apps/content/urls.py) (Content routes), [`apps/content/views.py`](https://github.com/raconer/django-practice/blob/main/apps/content/views.py) (Content view)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Request routing"]
  node_root_urls["Root routes<br/>[urls.py]"]
  node_content_urls["Content routes<br/>[urls.py]"]
  node_content_view["Content view<br/>[views.py]"]
end

subgraph group_runtime["Django runtime"]
  node_json_response["JSON response<br/>[views.py]"]
  node_settings["Django settings<br/>[settings.py]"]
  node_sqlite[("SQLite database<br/>[db.sqlite3]")]
  node_wsgi["WSGI entry<br/>[wsgi.py]"]
  node_asgi["ASGI entry<br/>[asgi.py]"]
end

subgraph group_errors["Error handling"]
  node_exception_handler["Custom exceptions"]
end

node_user(("HTTP client"))
node_django_runtime["Django runtime"]

node_user -->|"sends request"| node_root_urls
node_root_urls -->|"routes prefix"| node_content_urls
node_content_urls -->|"dispatches to"| node_content_view
node_content_view -->|"returns JSON"| node_json_response
node_wsgi -->|"creates app"| node_django_runtime
node_asgi -->|"creates app"| node_django_runtime
node_settings -->|"sets routing"| node_root_urls
node_settings -->|"configures database"| node_sqlite
node_settings -->|"configures handler"| node_exception_handler
node_root_urls -->|"sets 404 handler"| node_exception_handler

click node_root_urls "https://github.com/raconer/django-practice/blob/main/config/urls.py"
click node_content_urls "https://github.com/raconer/django-practice/blob/main/apps/content/urls.py"
click node_content_view "https://github.com/raconer/django-practice/blob/main/apps/content/views.py"
click node_json_response "https://github.com/raconer/django-practice/blob/main/apps/content/views.py"
click node_settings "https://github.com/raconer/django-practice/blob/main/config/settings.py"
click node_sqlite "https://github.com/raconer/django-practice/blob/main/db.sqlite3"
click node_wsgi "https://github.com/raconer/django-practice/blob/main/config/wsgi.py"
click node_asgi "https://github.com/raconer/django-practice/blob/main/config/asgi.py"
click node_exception_handler "https://github.com/raconer/django-practice/blob/main/apps/common/exception/custom_exception_handler.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root_urls,node_content_urls,node_content_view,node_user toneBlue
class node_json_response,node_settings,node_sqlite,node_wsgi,node_asgi toneAmber
class node_exception_handler toneMint
class node_django_runtime toneIndigo
```

## Components

### Request routing

- [Root routes](https://github.com/raconer/django-practice/blob/main/config/urls.py): `config/urls.py`
- [Content routes](https://github.com/raconer/django-practice/blob/main/apps/content/urls.py): `apps/content/urls.py`
- [Content view](https://github.com/raconer/django-practice/blob/main/apps/content/views.py): `apps/content/views.py`

### Django runtime

- [JSON response](https://github.com/raconer/django-practice/blob/main/apps/content/views.py): `apps/content/views.py`
- [Django settings](https://github.com/raconer/django-practice/blob/main/config/settings.py): `config/settings.py`
- [SQLite database](https://github.com/raconer/django-practice/blob/main/db.sqlite3): `db.sqlite3`
- [WSGI entry](https://github.com/raconer/django-practice/blob/main/config/wsgi.py): `config/wsgi.py`
- [ASGI entry](https://github.com/raconer/django-practice/blob/main/config/asgi.py): `config/asgi.py`

### Error handling

- [Custom exceptions](https://github.com/raconer/django-practice/blob/main/apps/common/exception/custom_exception_handler.py): `apps/common/exception/custom_exception_handler.py`

### Other components

- **HTTP client**
- **Django runtime**

## Connections

- HTTP client → Root routes: sends request (evidence: `config/urls.py`)
- Root routes → Content routes: routes prefix (evidence: `config/urls.py`)
- Content routes → Content view: dispatches to (evidence: `apps/content/urls.py`)
- Content view → JSON response: returns JSON (evidence: `apps/content/views.py`)
- WSGI entry → Django runtime: creates app (evidence: `config/wsgi.py`)
- ASGI entry → Django runtime: creates app (evidence: `config/asgi.py`)
- Django settings → Root routes: sets routing (evidence: `config/settings.py`)
- Django settings → SQLite database: configures database (evidence: `config/settings.py`)
- Django settings → Custom exceptions: configures handler (evidence: `config/settings.py`)
- Root routes → Custom exceptions: sets 404 handler (evidence: `config/urls.py`)
