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

# Django-Instrumentierung

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Python", version: "0.1.0" },
{ name: "Django", version: "1.10" }
]}
/>

[Django](https://www.djangoproject.com/) ist ein hochrangiges Python-Webframework, das schnelle Entwicklung und sauberes, pragmatisches Design fördert.

## Installation

<Note>
  🐍 Vergessen Sie nicht, zuerst das [AppSignal for Python-Paket zu installieren](/python/installation) in Ihrer Anwendung.
</Note>

Installieren Sie zunächst das Paket `opentelemetry-instrumentation-django` sowie die Pakete `opentelemetry-instrumentation-wsgi` und `opentelemetry-instrumentation-asgi`. Um diese Pakete zu Ihrem Projekt hinzuzufügen, fügen Sie die folgende Zeile in Ihre `requirements.txt`-Datei ein:

<CodeGroup>
  ```python Python theme={null}
  # requirements.txt
  opentelemetry-instrumentation-django
  opentelemetry-instrumentation-wsgi
  opentelemetry-instrumentation-asgi
  ```
</CodeGroup>

Um Abfragen zu instrumentieren, die über das Django-ORM ausgeführt werden, installieren Sie die Instrumentierung für die SQL-Datenbank, die Ihre Anwendung verwendet:

* [MySQL](/python/instrumentations/mysql)
* [PostgreSQL](/python/instrumentations/postgresql)
* [SQLite](/python/instrumentations/sqlite)

<Note>
  Die AppSignal for Python-Integration verwendet diese Instrumentierung automatisch, wenn das entsprechende Paket installiert ist. Um diese Instrumentierung zu deaktivieren, ohne das Paket zu deinstallieren, verwenden Sie die [Konfigurationsoption `disable_default_instrumentations`](/python/configuration/options#option-disable_default_instrumentations).
</Note>

## Entwicklungsumgebung einrichten

Django erfordert eine zusätzliche Einrichtung, da es üblicherweise das erste ist, was in einer App gestartet wird.

Wie im folgenden Beispiel gezeigt, muss das Modul `appsignal` in der Datei `manage.py` importiert werden. Dann muss in der Methode `main` die Methode `appsignal.start` aufgerufen werden, um die in der Datei `__appsignal__.py` konfigurierte Instrumentierung zu initialisieren.

<CodeGroup>
  ```python Python theme={null}
  # manage.py
  #!/usr/bin/env python
  """Django's command-line utility for administrative tasks."""
  import os
  import sys

  # Add this import statement
  import appsignal

  def main():
      """Run administrative tasks."""
      os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<YOUR_APP_NAME_HERE>.settings')

      # Add this method call
      appsignal.start()

      try:
          from django.core.management import execute_from_command_line
      except ImportError as exc:
          raise ImportError(
              "Couldn't import Django. Are you sure it's installed and "
              "available on your PYTHONPATH environment variable? Did you "
              "forget to activate a virtual environment?"
          ) from exc
      execute_from_command_line(sys.argv)

  if __name__ == '__main__':
      main()
  ```
</CodeGroup>

## Produktions-Setup (WSGI/ASGI)

In der Produktion wird empfohlen, Django mit einem WSGI- oder ASGI-Server wie
Gunicorn oder Uvicorn auszuführen. In diesem Szenario wird die in der Entwicklungsumgebung oben modifizierte Datei `manage.py` niemals aufgerufen.

Um Ihre Anwendung zu instrumentieren, wenn sie als WSGI- oder ASGI-Server gestartet wird, fügen Sie Folgendes
in die Datei `wsgi.py` Ihres Projekts ein, wenn Sie einen WSGI-Server verwenden:

<CodeGroup>
  ```python Python theme={null}
  # wsgi.py
  import os

  # Add this import statement
  import appsignal

  from django.core.wsgi import get_wsgi_application

  os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_app.settings')

  # Add this method call
  appsignal.start()

  application = get_wsgi_application()
  ```
</CodeGroup>

Oder in die Datei `asgi.py` Ihres Projekts, wenn Sie einen ASGI-Server verwenden:

<CodeGroup>
  ```python Python theme={null}
  # asgi.py
  import os

  # Add this import statement
  import appsignal

  from django.core.asgi import get_asgi_application

  os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_app.settings')

  # Add this method call
  appsignal.start()

  application = get_asgi_application()
  ```
</CodeGroup>

## Funktionen

Standardmäßig meldet die Django-Instrumentierung die Parameter eingehender Anfragen, wie Query-Strings und Routing-Parameter.

<Warning>
  🔐 Senden Sie keine <strong>personenbezogenen Daten (Personal Identifiable Information, PII)</strong> an AppSignal. Filtern Sie PII (z. B. Namen, E-Mail-Adressen) und verwenden Sie stattdessen eine ID, einen Hash oder einen pseudonymisierten Bezeichner. <br /> <br /> Für <strong>HIPAA-pflichtige Stellen</strong> finden Sie weitere Informationen zum Abschluss eines Business Associate Agreement (BAA) in unserer <a href="/support/business-add-ons">Business Add-Ons-Dokumentation</a>.
</Warning>
