MVC / MVT

MVC separates model, request/input coordination, and presentation. Django’s MVT uses “view” for request handling and “template” for presentation. These are presentation patterns and can coexist with layered or feature-oriented application architecture.

src/app/
├── models/
├── controllers/
└── presentation/

Complete Configuration

deply:
  paths: ["."]
  exclude_files:
    - '.*/\.venv/.*'
    - '.*/tests?/.*'
    - '.*/migrations/.*'
  layers:
    - name: models
      collectors:
        - type: directory
          directories: ["src/app/models"]
    - name: controllers
      collectors:
        - type: directory
          directories: ["src/app/controllers"]
    - name: presentation
      collectors:
        - type: directory
          directories: ["src/app/presentation"]
  ruleset:
    models:
      disallow_layer_dependencies: [controllers, presentation]
    presentation:
      disallow_layer_dependencies: [controllers]

Controllers may depend on models; models must not depend on delivery or presentation code. Templates are not Python and therefore are outside Deply’s AST analysis. For concrete collectors, see the Django, FastAPI, and Flask recipes.

Deply cannot verify template dependencies, request dispatch, rendered output, or whether controller responsibilities remain cohesive.

Validate

deply validate --config=deply.yaml
deply analyze --parallel --config=deply.yaml

References: Fowler’s MVC and Django’s design philosophies.


This site uses Just the Docs, a documentation theme for Jekyll.