Skip to content

django-language-server

A language server for the Django web framework.

New to language servers, or unsure whether you need one? Start with Why a language server?

Warning

This project is in early stages. All Most features are incomplete and missing.

Features

  • Completions - Template tag and filter autocompletion with snippets Completions
  • Diagnostics - Real-time error checking and validation Diagnostics
  • Command-line checks - Validate template files and directories with djls check
  • Go to definition - Jump to template, block, and registered Python definitions
    • Template navigation for {% extends %} and {% include %}
    • Template Library, Tag, Filter, and selective-load symbol navigation
    • Exact source highlighting in editors that support definition links
    • Block definitions across template inheritance
    • Variable definitions
  • Find references - See where templates and inherited blocks are used
    • Template references for {% extends %} and {% include %}
    • Block references across template inheritance
    • Variable references
  • Document links - Click through resolved template references and template libraries
    • Template names in {% extends %} and {% include %}
    • Template libraries in {% load %}
  • Folding ranges - Fold Django template regions Folding ranges
  • Hover - View documentation for Django template tags, filters, libraries, and template references Hover tag Hover filter Hover template
  • Code actions - Quick fixes for unloaded tags or filters and mismatched closing block names
  • Formatting - Opt-in LSP document formatting through djangofmt
  • Rename - Refactor names across files
  • Document symbols - Outline view of template structure
  • Workspace symbols - Search across all project templates
  • Signature help - Parameter hints while typing

Getting Started

Follow the getting started guide to go from nothing to a working setup: install the server, configure your editor, and open a template.

The short version:

uv tool install django-language-server
# or: pipx install django-language-server

Then set up your editor's LSP client to run the server:

  • VS Code - Install the extension from the marketplace
  • Neovim - Configure with vim.lsp.config()
  • Sublime Text - Set up with LSP package
  • Zed - Install the extension

Any other editor with an LSP client works too; see Editor setup. The Installation reference covers Homebrew, pip, standalone binaries, and source builds. The djls CLI can check templates without an editor.