Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- django
- BFS
- 알고리즘
- Data Structure
- programmers
- GitHub
- Back tracking
- Algorithm
- JavaScript
- hash table
- Bruth Force
- Vue.js
- 알고리듬
- Python
- 시뮬레이션
- SQL
- boj
- Trie
- DFS
- Linked list
- 코테
- 코딩테스트
- 모의SW역량테스트
- spring boot
- CSV
- aws
- Priority Queue
- SWEA
- gpdb
- 구현
Archives
- Today
- Total
hotamul의 개발 이야기
[Django] User Model 커스터마이징 #6 (TDD) 본문
[Django] User Model 커스터마이징 #5 (TDD)에서 super user 생성까지 해봤다. 이제 django admin 페이지에서 UI로 user를 관리할 수 있도록 해보자.
user 목록 조회, user 수정 페이지, user 생성 페이지를 만들어보자.
user_lists, edit_user page, create_user page : test
먼저 테스트를 만들어보자.
user/test/test_admin.py
를 추가하고 다음과 같이 setUp
메소드를 만든다.
"""
Tests for the Django admin modifications.
"""
from django.test import TestCase
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.test import Client
class AdminSiteTests(TestCase):
"""Tests for Django admin."""
def setUp(self):
"""Create user and client."""
self.client = Client()
self.admin_user = get_user_model().objects.create_superuser(
email='admin@example.com',
password='testpass123',
)
self.client.force_login(self.admin_user)
self.user = get_user_model().objects.create_user(
email='user@example.com',
password='testpass123',
name='Test User'
)
setUp
은 AdminSiteTests
클래스의 test_
로 시작하는 메소드들이 실행되기 전 실행된다.
초기 setting이라고 생각하면 된다.
test 코드를 아래와 같이 작성해 보자.
...
def test_users_lists(self):
"""Test that users are listed on page."""
url = reverse('admin:core_user_changelist')
res = self.client.get(url)
self.assertContains(res, self.user.name)
self.assertContains(res, self.user.email)
def test_edit_user_page(self):
"""Test the edit user page works."""
url = reverse('admin:core_user_change', args=[self.user.id])
res = self.client.get(url)
self.assertEqual(res.status_code, 200)
def test_create_user_page(self):
"""Test the create user page works."""
url = reverse('admin:core_user_add')
res = self.client.get(url)
self.assertEqual(res.status_code, 200)
...
user 목록을 조회하고 미리 생성했던 user@example.com
이메일을 가진 user가 있는지 확인한다.
edit_user 페이지를 조회 했을 때 status가 200인지 확인한다.
create_user 페이지를 조회 할 때 status가 200인지 확인한다.
user_lists
이제 구현 해보자. gettext_lazy
는 django에서 제공하는 번역 모듈로 _
(underscore)로 alias를 준 것 뿐이다.
[django.utils.translation]https://docs.djangoproject.com/en/4.0/topics/i18n/translation/
"""
Django admin customizations.
"""
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.utils.translation import gettext_lazy as _
from core import models
class UserAdmin(BaseUserAdmin):
"""Define the admin pages for users."""
ordering = ['id']
list_display = ['email', 'name']
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal Info'), {'fields': ('name',)}),
(
_('Permissions'),
{
'fields': (
'is_active',
'is_staff',
'is_superuser',
)
}
),
(_('Important dates'), {'fields': ('last_login',)}),
)
readonly_fields = ['last_login']
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': (
'email',
'password1',
'password2',
'name',
'is_active',
'is_staff',
'is_superuser',
),
}),
)
admin.site.register(models.User, UserAdmin)
이제 테스트를 실행해보면
짜잔!
'Dev. > Django' 카테고리의 다른 글
[Django] APIView vs Viewsets (0) | 2022.07.23 |
---|---|
[Django] drf_spectacular 사용해보기 (0) | 2022.07.13 |
[Django] User Model 커스터마이징 #5 (TDD) (0) | 2022.07.06 |
[Django] User Model 커스터마이징 #4 (TDD) (0) | 2022.07.03 |
[Django] User Model 커스터마이징 #3 (TDD) (0) | 2022.07.01 |
Comments