이것은 HTMX와 Django를 사용하여 Todo 앱을 구축하는 방법에 대한 시리즈의 두 번째 게시물입니다. 1부를 보려면 여기를 클릭하세요.
2부에서는 Todo 모델을 생성하고 단위 테스트를 통해 기본 기능을 구현해 보겠습니다.
Todo 모델 만들기
models.py에서 기본 속성을 사용하여 Todo 모델을 생성해 보겠습니다. 우리는 사용자가 자신의 항목만 볼 수 있도록 Todo 항목을 UserProfile에 연결하려고 합니다. 할 일 항목에는 제목과 부울 속성 is_completed도 있습니다. 우리는 작업을 완료 또는 시작하지 않은 것 외에 "진행 중"으로 설정하는 기능, 기한 등 Todo 모델에 대한 많은 미래 아이디어를 가지고 있지만 이는 나중을 위한 것입니다. 이제 최대한 빨리 화면에 무언가를 표시하는 방법을 간단하게 만들어 보겠습니다.
참고: 실제 앱에서는 UUID를 UserProfile 및 Todo 모델의 기본 키로 사용하는 것을 고려해야 하지만 지금은 간단하게 설명하겠습니다.
# core/models.py from django.contrib.auth.models import AbstractUser from django.db import models # <p>새 모델에 대한 마이그레이션을 실행해 보겠습니다.<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
첫 번째 테스트 작성
우리 프로젝트의 첫 번째 테스트를 작성해 보겠습니다. 우리는 사용자가 자신의 할 일 항목만 볼 수 있고 다른 사용자의 항목은 볼 수 없도록 하고 싶습니다.
테스트 작성을 돕기 위해 우리는 더미 Django 모델 인스턴스 생성 프로세스를 단순화하는 model-bakery 프로젝트에 새로운 개발 종속성을 추가할 것입니다. pytest-django도 추가하겠습니다.
❯ 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
pyproject.toml에서 파일 끝에 몇 줄을 추가하여 pytest를 구성해야 합니다.
# pyproject.toml # NEW [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "todomx.settings" python_files = ["test_*.py", "*_test.py", "testing/python/*.py"]
이제 사용자가 자신의 할일에만 액세스할 수 있도록 하는 첫 번째 테스트를 작성해 보겠습니다.
# 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"}
우리는 테스트에 사용할 모든 픽스쳐를 위한 장소를 확보하기 위해 pytest의 conftest.py 파일을 사용하고 있습니다. model_bakery 라이브러리를 사용하면 최소한의 상용구로 UserProfile 및 Todo의 인스턴스를 간단하게 생성할 수 있습니다.
#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
테스트를 진행해 보세요!
❯ 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
Todos의 관리자 페이지 등록
마지막으로 관리자 페이지를 등록할 수 있습니다.
# core/admin.py from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import Todo, UserProfile # <p>이제 관리자에서 일부 Todo를 추가할 수 있습니다!</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>2부가 끝날 때까지 전체 코드를 확인하고 싶다면 Github 02부 브랜치에서 확인하실 수 있습니다.</p>
위 내용은 Django 및 HTMX를 사용하여 To-Do 앱 만들기 - TDD를 사용하여 Todo 모델 추가 부분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

이 기사에서는 HTML을 구문 분석하기 위해 파이썬 라이브러리 인 아름다운 수프를 사용하는 방법을 설명합니다. 데이터 추출, 다양한 HTML 구조 및 오류 처리 및 대안 (SEL과 같은 Find (), find_all (), select () 및 get_text ()와 같은 일반적인 방법을 자세히 설명합니다.

Python의 통계 모듈은 강력한 데이터 통계 분석 기능을 제공하여 생물 통계 및 비즈니스 분석과 같은 데이터의 전반적인 특성을 빠르게 이해할 수 있도록 도와줍니다. 데이터 포인트를 하나씩 보는 대신 평균 또는 분산과 같은 통계를보고 무시할 수있는 원래 데이터에서 트렌드와 기능을 발견하고 대형 데이터 세트를보다 쉽고 효과적으로 비교하십시오. 이 튜토리얼은 평균을 계산하고 데이터 세트의 분산 정도를 측정하는 방법을 설명합니다. 달리 명시되지 않는 한,이 모듈의 모든 함수는 단순히 평균을 합산하는 대신 평균 () 함수의 계산을 지원합니다. 부동 소수점 번호도 사용할 수 있습니다. 무작위로 가져옵니다 수입 통계 Fracti에서

이 기사는 딥 러닝을 위해 텐서 플로와 Pytorch를 비교합니다. 데이터 준비, 모델 구축, 교육, 평가 및 배포와 관련된 단계에 대해 자세히 설명합니다. 프레임 워크, 특히 계산 포도와 관련하여 주요 차이점

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

이 기사는 Python 개발자가 CLIS (Command-Line Interfaces) 구축을 안내합니다. Typer, Click 및 Argparse와 같은 라이브러리를 사용하여 입력/출력 처리를 강조하고 CLI 유용성을 향상시키기 위해 사용자 친화적 인 디자인 패턴을 홍보하는 세부 정보.

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

이 기사는 프로젝트 종속성 관리 및 충돌을 피하는 데 중점을 둔 Python에서 가상 환경의 역할에 대해 설명합니다. 프로젝트 관리 개선 및 종속성 문제를 줄이는 데있어 생성, 활성화 및 이점을 자세히 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
