


Erstellen einer To-Do-App mit Django und HTMX – Teil Hinzufügen des Todo-Modells mit TDD
Dies ist der zweite Beitrag unserer Serie zum Erstellen einer Todo-App mit HTMX und Django. Klicken Sie hier für Teil 1.
In Teil 2 erstellen wir das Todo-Modell und implementieren seine Grundfunktionalität mit Unit-Tests.
Erstellen des Todo-Modells
In models.py erstellen wir das Todo-Modell mit seinen Grundattributen. Wir möchten, dass ein Todo-Element einem Benutzerprofil zugeordnet wird, sodass ein Benutzer nur seine eigenen Elemente sieht. Ein ToDo-Element hat außerdem einen Titel und das boolesche Attribut is_completed. Wir haben viele zukünftige Ideen für das Todo-Modell, wie zum Beispiel die Möglichkeit, eine Aufgabe neben der Angabe, ob sie abgeschlossen oder nicht begonnen wurde, auch auf „in Bearbeitung“ zu setzen, und Fälligkeitstermine festzulegen, aber das ist für später. Lassen Sie es uns jetzt einfach halten, um so schnell wie möglich etwas auf dem Bildschirm zu haben.
Hinweis: In einer realen App sollten wir wahrscheinlich die Verwendung von UUIDs als Primärschlüssel für die UserProfile- und Todo-Modelle in Betracht ziehen, aber wir halten es vorerst einfach.
# core/models.py from django.contrib.auth.models import AbstractUser from django.db import models # <p>Lassen Sie uns die Migrationen für das neue Modell ausführen:<br> </p> <pre class="brush:php;toolbar:false">❯ uv run python manage.py makemigrations Migrations for 'core': core/migrations/0002_todo.py + Create model Todo ❯ uv run python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, core, sessions Running migrations: Applying core.0002_todo... OK
Wir schreiben unsere ersten Tests
Lassen Sie uns die ersten Tests zu unserem Projekt schreiben. Wir möchten sicherstellen, dass ein Benutzer nur seine eigenen Aufgaben sieht und nicht die Elemente anderer Benutzer.
Um uns beim Schreiben der Tests zu helfen, werden wir unserem Projekt eine neue Entwicklungsabhängigkeit hinzufügen, model-bakery, die den Prozess der Erstellung von Dummy-Django-Modellinstanzen vereinfacht. Wir werden auch pytest-django hinzufügen.
❯ uv add model-bakery pytest-django --dev Resolved 27 packages in 425ms Installed 2 packagez in 12ms + model-bakery==1.20.0 + pytest-django==4.9.0
In pyproject.toml müssen wir pytest konfigurieren, indem wir am Ende der Datei einige Zeilen hinzufügen:
# pyproject.toml # NEW [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "todomx.settings" python_files = ["test_*.py", "*_test.py", "testing/python/*.py"]
Jetzt schreiben wir unseren ersten Test, um sicherzustellen, dass Benutzer nur Zugriff auf ihre eigenen Aufgaben haben.
# core/tests/test_todo_model.py import pytest @pytest.mark.django_db class TestTodoModel: def test_todo_items_are_associated_to_users(self, make_todo, make_user): [user1, user2] = make_user(_quantity=2) for i in range(3): make_todo(user=user1, title=f"user1 todo {i}") make_todo(user=user2, title="user2 todo") assert {todo.title for todo in user1.todos.all()} == { "user1 todo 0", "user1 todo 1", "user1 todo 2", } assert {todo.title for todo in user2.todos.all()} == {"user2 todo"}
Wir verwenden eine conftest.py-Datei von pytest, um einen Platz für alle Fixtures zu haben, die wir in unseren Tests verwenden möchten. Die model_bakery-Bibliothek macht es einfach, Instanzen von UserProfile und Todo mit minimalem Boilerplate zu erstellen.
#core/tests/conftest.py import pytest from model_bakery import baker @pytest.fixture def make_user(django_user_model): def _make_user(**kwargs): return baker.make("core.UserProfile", **kwargs) return _make_user @pytest.fixture def make_todo(make_user): def _make_todo(user=None, **kwargs): return baker.make("core.Todo", user=user or make_user(), **kwargs) return _make_todo
Lass uns unsere Tests durchführen!
❯ uv run pytest Test session starts (platform: darwin, Python 3.12.8, pytest 8.3.4, pytest-sugar 1.0.0) django: version: 5.1.4, settings: todomx.settings (from ini) configfile: pyproject.toml plugins: sugar-1.0.0, django-4.9.0 collected 1 item core/tests/test_todo_model.py ✓ 100% ██████████ Results (0.25s): 1 passed
Registrieren Sie eine Admin-Seite für Todos
Endlich können wir eine Admin-Seite dafür registrieren:
# core/admin.py from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import Todo, UserProfile # <p>Wir können jetzt einige Todos vom Administrator hinzufügen!</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173594553634650.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Creating a To-Do app with Django and HTMX - Part Adding the Todo model with TDD"></p> <p>Wenn Sie den gesamten Code bis zum Ende von Teil 2 überprüfen möchten, können Sie ihn auf Github in der Zweigstelle Teil 02 überprüfen.</p>
Das obige ist der detaillierte Inhalt vonErstellen einer To-Do-App mit Django und HTMX – Teil Hinzufügen des Todo-Modells mit TDD. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion