From fd3013469f31a6eb653ad7625cb33628126b69bf Mon Sep 17 00:00:00 2001 From: Hyeok Lee <112482426+hhhkdev@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:35:43 +0900 Subject: [PATCH 01/15] =?UTF-8?q?docs:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functional_specification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functional_specification.md b/functional_specification.md index 6df3dfec..31b16639 100644 --- a/functional_specification.md +++ b/functional_specification.md @@ -42,7 +42,7 @@ - 출력 : 성공적으로 회원이 삭제되었음을 알림 - 참고 : 없음 -# [미션 1] 회원 관리 앱 DB 테이블 설계 +## [미션 1] 회원 관리 앱 DB 테이블 설계 회원 관리 앱의 기능 명세서를 기반으로, 앱에서 사용할 데이터베이스(DB) 테이블을 설계하는 것이 미션입니다. 회원의 필수 정보를 효과적으로 저장하고 관리할 수 있도록 DB 구조를 설계하고, 각 테이블과 필드에 대한 설명을 작성하세요. From 2f6c7c0602a1df5e33cf9bd71c9ba5c116368365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sat, 23 Nov 2024 04:43:02 +0900 Subject: [PATCH 02/15] make mission app --- mission_course/db.sqlite3 | 0 mission_course/manage.py | 22 ++++ mission_course/members/__init__.py | 0 mission_course/members/admin.py | 3 + mission_course/members/apps.py | 6 + mission_course/members/migrations/__init__.py | 0 mission_course/members/models.py | 3 + mission_course/members/tests.py | 3 + mission_course/members/views.py | 3 + mission_course/mission/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 187 bytes .../__pycache__/settings.cpython-313.pyc | Bin 0 -> 2571 bytes .../mission/__pycache__/urls.cpython-313.pyc | Bin 0 -> 1054 bytes .../mission/__pycache__/wsgi.cpython-313.pyc | Bin 0 -> 675 bytes mission_course/mission/asgi.py | 16 +++ mission_course/mission/settings.py | 124 ++++++++++++++++++ mission_course/mission/urls.py | 22 ++++ mission_course/mission/wsgi.py | 16 +++ 18 files changed, 218 insertions(+) create mode 100644 mission_course/db.sqlite3 create mode 100644 mission_course/manage.py create mode 100644 mission_course/members/__init__.py create mode 100644 mission_course/members/admin.py create mode 100644 mission_course/members/apps.py create mode 100644 mission_course/members/migrations/__init__.py create mode 100644 mission_course/members/models.py create mode 100644 mission_course/members/tests.py create mode 100644 mission_course/members/views.py create mode 100644 mission_course/mission/__init__.py create mode 100644 mission_course/mission/__pycache__/__init__.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/settings.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/urls.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/wsgi.cpython-313.pyc create mode 100644 mission_course/mission/asgi.py create mode 100644 mission_course/mission/settings.py create mode 100644 mission_course/mission/urls.py create mode 100644 mission_course/mission/wsgi.py diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/manage.py b/mission_course/manage.py new file mode 100644 index 00000000..900c7a29 --- /dev/null +++ b/mission_course/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mission.settings') + 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() diff --git a/mission_course/members/__init__.py b/mission_course/members/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/members/admin.py b/mission_course/members/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/mission_course/members/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/mission_course/members/apps.py b/mission_course/members/apps.py new file mode 100644 index 00000000..7ca26c15 --- /dev/null +++ b/mission_course/members/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MemberConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'member' diff --git a/mission_course/members/migrations/__init__.py b/mission_course/members/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/members/models.py b/mission_course/members/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/mission_course/members/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/mission_course/members/tests.py b/mission_course/members/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/mission_course/members/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mission_course/members/views.py b/mission_course/members/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/mission_course/members/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/mission_course/mission/__init__.py b/mission_course/mission/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/mission/__pycache__/__init__.cpython-313.pyc b/mission_course/mission/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9614f7a68735807b1a3b75fa674f135a0c611bc GIT binary patch literal 187 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 literal 0 HcmV?d00001 diff --git a/mission_course/mission/asgi.py b/mission_course/mission/asgi.py new file mode 100644 index 00000000..4250f416 --- /dev/null +++ b/mission_course/mission/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for mission project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mission.settings') + +application = get_asgi_application() diff --git a/mission_course/mission/settings.py b/mission_course/mission/settings.py new file mode 100644 index 00000000..865584be --- /dev/null +++ b/mission_course/mission/settings.py @@ -0,0 +1,124 @@ +""" +Django settings for mission project. + +Generated by 'django-admin startproject' using Django 5.1.3. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-==_cax+f@j=%umo8m3@df=5@5gykf^h#j^q8q6acq#sk1q!ylt' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'members.apps.MembersConfig', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'mission.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'mission.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.1/topics/i18n/ + +LANGUAGE_CODE = 'ko-kr' + +TIME_ZONE = 'Asia/Seoul' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/mission_course/mission/urls.py b/mission_course/mission/urls.py new file mode 100644 index 00000000..3161542d --- /dev/null +++ b/mission_course/mission/urls.py @@ -0,0 +1,22 @@ +""" +URL configuration for mission project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/mission_course/mission/wsgi.py b/mission_course/mission/wsgi.py new file mode 100644 index 00000000..f61f0293 --- /dev/null +++ b/mission_course/mission/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for mission project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mission.settings') + +application = get_wsgi_application() From d275614d89fb009f9ce13965d719436cabe9d630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sat, 23 Nov 2024 04:54:52 +0900 Subject: [PATCH 03/15] make table --- mission_course/db.sqlite3 | Bin 0 -> 135168 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 187 bytes .../members/__pycache__/admin.cpython-313.pyc | Bin 0 -> 231 bytes .../members/__pycache__/apps.cpython-313.pyc | Bin 0 -> 553 bytes .../__pycache__/models.cpython-313.pyc | Bin 0 -> 739 bytes mission_course/members/apps.py | 4 +-- .../members/migrations/0001_initial.py | 24 ++++++++++++++++++ .../__pycache__/0001_initial.cpython-313.pyc | Bin 0 -> 1105 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 198 bytes mission_course/members/models.py | 6 +++++ .../__pycache__/settings.cpython-313.pyc | Bin 2571 -> 2599 bytes 11 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 mission_course/members/__pycache__/__init__.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/admin.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/apps.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/models.cpython-313.pyc create mode 100644 mission_course/members/migrations/0001_initial.py create mode 100644 mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc create mode 100644 mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8586d2b8d5e35f6df565006c221cec70fc39a095 100644 GIT binary patch literal 135168 zcmeI5eQX?OUdMO5>m9%Cj$h(TlQ{Kw6F1p&T<@#b+j3mpWSf{KPUASVk*J2*-LbRj zzBs$^>*e9tM0 z&*z&m|EFL4=UG|?%ysrlu&r;mI^}!%_M5%TSo%J*k)`j4jt_os@TtK+>VHT4ZvU?Z zzuLPV_<8?(Js3q!UIbDQ?x9>k)wpN$i;V^rSjk=V>4F!8LOieT6 zXd0VIp;m3`)u!6Kx1qBxl~_w<=JiybH;rW{d9;aDs&41SrrWY+{l`^-WL^!4^1T^h zOR}28s?v3ULanG*wTiCB;#xkLNo!VXShd32H-lxgN7s9fgj%32E)v~(Wk{447lr%J zHnn`&I8XW6&li@6hIMUmmxRn9Ru`YYn6qC`+=dJ*T}YG?HR!rtSC%iYD$Ca{UQ}LM zS-P~ia$R{bcU@V$wt9JKnOt7VEw7SP?!>d!O74Z+N^bdV?yBve<}sqmIaa#DB`qy4 ztu8HIym;N*nLF3j3A;6QdAC^X?HJLm*q|uS&I($4{e9hD1M~i8P|xt zwFeM4|YxTknt$sS5ScrDIC3TXr z)@Z8b+Ip!PQHokqZ$y}Z;=8=KTISSO7r`C6@PFJ*h#CBX8Zj9Ko@dp8|rtyHJO zY;V~XvZIAw(Mo0ONSU;CB&yGZHnp|2Zjn@?6`G~nq|&XQMXcVem8v=+>Iy#^9|+31 zNx{c2hmBihdR$Yfp~#+|Z`hjofD`Ym4sI>?iE=h8+|O9;YxE`S>@rS_uD$&pE#GCd zuWn#?dFY*)s9Qm?2dE#!HKsKj6y>QYq4k;zC}++i6So7mFIdh#xX|67qe(F+pP$;X zTNuQRe!q0=3Ye}K?X@0VK97@$THq^3~*UM^!oP9p8R@i?y+?oz5+E_K~q=sGYy z7NX_Y;Dk^53+aneQJM<>efVd?&xbw;eK~X|lp1<>=&hk29~v3_+Ta_5SI7)MAOHd& z00JNY0w4eaAn@1{NRIXTj!!Q(bYsjV7K_EzQnl19Y2`#Lk(!OiXA=n}o_!{rd?vZ@ zbS55)XJU!bUf;3l#fo0Z>-ENNb>&(I7(;Jv1Iy%5IMTqcC=u3)K2^DA}Bq- zkc`J)93nrjw*6#GKex4ViTKp&l$z+|ji5ACYWaj0<#arjiN~KGAQvyTU8L=CS;@$@Y3W!j8(Vm;pM132 zI+n8g=&-46G(7`JQAdp}ob4kI?Y533?H+iZa~HI!bTSoBToB1gyYt4{o!3eb@r>(k zo)Vd4EPWx^>zh8mXy$)7Mn;kNR%*99c#RP%)`Pt8CbRKaI=0l?>yt@Su~Mp%izG`f z)8JP99&cxsh^C4h>=}qaEq`QypB^`l*00@8p2!H?xfB*=900@8p2!OyxNMJ1BpAlTsY$ihe z{;58`lV{t82K|_%We9*~t7IoCr*x5bQG|Z0o(D!1y>%Bd`oXARHK%`4&$f_{Rd{Q+%_N zFsSy71mxrWJSEVc5W(jEPYiy;C;hYZ`_j)ydFdHxDEu$sKL~#@Tn{gYpAL_P{yX%y zq2CR?5n2tM82aAO+e5!Sbbsh4hn^ccI`|!`h#wFD0T2KI5C8!X009sHfgd6PWun(7 zoR|@Bm-IU{nVo%xa8|1-Y*R5dPaY$SQ*$DHuddTSCSlnaJK9!94J-N=JF4q;D`SUg z_2dz~S{=DUgw#@R#6I4Du8{}%tmzs_obNeZoY@+d?smEqz3ToROHtbAAHak<2 zxkni%yAv}(rpac+M46j2hsa_!)5}%a-l#gt%zX-*gg!@~fe7(udrf&Rb5o+D0(}C) zDwsN56-=%63Q_w0LzqeTGQlouCfaT~K_7Sslcxe)IeYEvNM;)feY`=D2TZB$a#JI> zpf59+g{iG=VTxj#N9mIb;rMibiD?%z6>R-U`iz2F+s}{AUo$(0=UWl_GJ;y$Zyvv6 zVG1y8=+g&gV=Cy_m=gH*1bx~-QTmyNjsX+FH%`-M3&KpYhpVvOZaY$}U1vnHoXhl> zdaMFwYl^aVo}up#n6;_QDqz;8JZtAu^o;@a+8(CS+RIFtP;1Xg`hcMSRGf=#zjb${ z(hh}xm~fiD5$K;un?mh&rcBF{z6~HtQ>5L}l-RM1&_@CN({oIq-HgfW*s$^ciO}0V z>Dx5=|L2qg_+{x0sUp2BotIM5lr$^};cth(8UCB_m%_giej{8B|3vtFI1!!eT1dGhZW()XmZ1 zfG{Q4aydsv1H!c6NZvegC?G@ySFT1jcAC!2B+Fs0!=8m1KO7Kdg|4j2p(g@DT=2-R zj2Q){TU%yibUYx;2=08zh!hYe1uHc&%mvt!A(FAjbjUIq;c!4WE_9L|Ax^-S-x%Tq z90`pRm009sH0T2KI5C8!X009sHfybW!oAf^+z3P+xPkLYaAL(1tyVAc&|0KO5eNFmH z=})DvNMDkEPx>wC*QK|lUzC19`Z?*dQcL=@v?$2! zhS<_S#FvA7Il!0wY}wPtmm*&V`LZ|Q?-v4W;b)5;zrVj9-uHFiCtaLc!(*a+c~)q} zOVy%&SKDmfP&XTTU0tu&Ha8l^da0<+Yw?6$T*$i(4xL@eEw1L2rR8(ESCojmxT}6d zxxCzM7Ew+|_)$y6NVN5-QBi)4BsF%H#1*QfEt^WFV})2j-K>^wxfP6=0{D*~f*L$6m#jYg?fZK&2d3t}NvNEfmRo$K#19`(T7 zWweb)oA|CO47@`JiJuu3}?Fyv!rqn05 z{8?e^#Gd3jf>mRMVlt7=$E=>yMQC{Y{?lb^oHVR8cR0+RW1}wRa6`eK3{%t0IGV<0 zQm9p%dbO!G?``NzL}D$Knb%XsIcwQT9&KWks@r+7>9(v{|8Z3ynO8$1PGYk&Sgaa2 zi8~iR)^Dtncq=w2%Cob={jsK&FB_LY+fB%QNgpyh@ap387jxb>6S|KmB|00{^}4cr zc~x1ycJZR}(#q1M#g*&Ii@EE{;iuL z|86-u(b>=%jXSkELA|Zj3pcd->3Cux+96AEmbFGxE!Wmd)reBmntHQT(e34>hT7Pq zbAfS=DEV5gY%gVdt6D|3{3m0Ud&RhS(^1w+bvn%UmTe(BTIdz6RJM+kNn1yv`b=n3 zTU+ZENhMmLS-MRs-TGO?>djiIsuQBF@T2j8pq!f&eEbg8xK%EZH8m93(<2vKGoQKQ zoz=muxd|~y^M(3n9UWRNXA&(B{>0)0UkbBzO*~Cou zb{>5s=juy6L3w6IxX!_v*UN@}Yg4Zlbl0ZefzVZWnw^7ZsAjZvT@dBDIbloVK8rWC z>UvGBl-BE7lf8^}?dWm%jdYdot3|Yp4eP#>NIP#l&g+G{l&Y3X-gg&_|Fi2Men0>O zKmY_l00ck)1V8`;KmY_l;PEC9qVNv+UiC>g!yBPL9Qu!ecL#o?|2O--**6+|kLCeX zdfxZH>Hm|SKNH^beMk5mGJKGq)}e$bUyTZ_EKgROd60(A$FNoX?nbGut33U!r3>?k z`T3;NWXjB=nDYaig`V||aYm;h%eL5#MMI49F;R|2g{@Qee2yv0S$EJglVh4P$L(NV z)9+c?nUpJZD5* z;!#)hN?xxwRO7dE%QgJtEZkS}%E(W3g=-9^xOeAE_2vy@D8vqj4UzEP;wp;9pMKC0 zlD^i+jK~xE6%NBn<6CR(k#74yp?zH9!3M#c3A%XN-b0KLs%Y}egJ<+7U;o6cxZ_Zs z*SLf&WBXuH>~|=S22jn>u?HE(^P)s<_-Nq{Jjuj0N|#8de$c~obWpGHMMnrU1tanh zreK7fS4G}qt#N^eG6iEwl<&<5Taq;^W`_e5YDJwjhZ>7(`D7-oSrcNcT0v8^$4n~A zs7t%I>pf2_WXS#HsdG>Ki^Wtr< zWFB?*X#<^@tpWF#?RrC0oM(??xFFiPFe%Elq|o}b{ibafqSAPRTGsMX}Yc#ZV znup?k>~cf1E>LX#)5E$rwR?}{y*bf}X3?~MOs1>aqR_f! z-P5=fzOXLs?wPgmwR}FkmMC-tb&bOxb@txv4PEm(+n#NAGfzRRvswCB|B1F14vTVu zg1Nq1Fx(@ZGFmpRYsI*22DUryBYO_R?Q<^ym~}|{opG9S+rKDm&FxjYBX~8Q(&qE? z$%OTg!F{{KdBP0G<9Wl=zH|ND;b;#MD4lN(PZassAyK|USIe|3aQ;%!u%`cJGwF0T zol03f$*?%QT?=jJz^&J?WBrM*@vemN{|8BEz!n5R00ck)1V8`;KmY_l00ck)1U{Yw z@c#etY&WO|0T2KI5C8!X009sH0T2KI5CDM(A%OS)2cZR95C8!X009sH0T2KI5C8!X z009vAcoM+-|Hrf4pc(`~00ck)1V8`;KmY_l00ck)1RjI{-v1wj7HmNP1V8`;KmY_l z00ck)1V8`;K;Yv^fc^XbqIAb6eM|ZW>93?emfn&+N1ONo0T2KI5C8!X009sH0T2KI z5C8!X`0xZq#DMSE5%UkL8NbGY0pIas=HG{Fn7@zp27J>e%)iXhytkn@Z0kdTfNy-9 z{h0vvCk;Y=+LGB8|JVITduVftZCZbaU_=P`>P{wB#AY&>+I)f&o-%5reCLr%KNa{;CkZ`t&2`x@7 zDvrs`%*#wI%}dTmOpWo+OLZyAEK7}fy zRGb=0iuQ(mv!0#s65oSC0z2xG)2=a&{0r^e)_<|cuR p09&e8P}C={^)IRN_YLc9O~ literal 0 HcmV?d00001 diff --git a/mission_course/members/__pycache__/apps.cpython-313.pyc b/mission_course/members/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8bc44a0bc84174199a0512898237504b87f8a62 GIT binary patch literal 553 zcmXw0&ui2`6rM@4+imNj)mBs#ss|yL1rI_I5o?Q}#r80G3p{2wvvEo?iEk1?uLaK@ zx}bkTZ$0>jcr1ZJ!BZ)P!q$_QzG<>^_~v_j?|Zx-(|&(}(ffb$I{8WeUl+_?rzO*; zL?%oy!ME6Zj(nBfV^5gy9x&lY{JG!cp_c?<=hOuuujki`Vk0+Wos1f}LEZ+_heReU zV#ozUPjK{whk@|1BLeIuov>T?Kd5Y|&^BdG19E(O6z@uts6V* z)hdnaxva4quMtrf zJKR6to2;Jy+CMw^O)1vu+&r5R808gO6}3Y|vMB7J_=@fj*WgxQ`vl+F(fzeQ!QG?9 z<-JY3HPg34zg}!NUg I^j*8I0P!N42><{9 literal 0 HcmV?d00001 diff --git a/mission_course/members/__pycache__/models.cpython-313.pyc b/mission_course/members/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80f2c81475e56d95915ca1a6a43d02d8b4fadcb2 GIT binary patch literal 739 zcmah{&ubGw6rRcMrrGQk*WblP3GFGDf`?v;h+q^{TA^z_4Gf#?m`>Rr?aZ#|txym> zd1(%U|3GgZ{3ARkhm=9_;Hi{?kb3vcZbGY<4$PbHd-J{b=DpqV>}(yu`u6id?>n5o zG?^}I0>&!<`p8E*h4z>|8cVER3GnvW_%qVO5ROkVUe4 zrbDPQA>+>g`iLNbeIzPA76vibi^rXpBPhH)afs@LiWyLN|Hf-}E{A=gqV89O(=%G8 zs;;uQ!^Dvu%mG?!xvEBK62y#BRi_lX%Oj0lN_X-gn%rEX^c5E}i+IA4lv1H*qwE*# zP4<|xC{(5vDvQMdkCfdGGFJMn4j0*`vbR#6&=B0}I;AoTGTx;@mI>a;GbSP73?v-G zMyDHK9uo4QJ+8Ci8EJfNXmfC8;wU@FmY_gL$HrY*QH&S~N zEIsw$LBakB-g@Yve?pHj9wKwH^dusr#L^x+yPJRq!7j|3-+TLeZ{Alo5(xt5`|+sq zfd}BHtMr7wcX#I)*ar$wxaVMrBis^C_;D}_CV;}Hf#OrSRq?8$hi81=O?(wW_MbV5 z%+p{ESBPd~)3B&mGj&w8N*>RXp`OzH%fLQR0pS!tc!eWAg(t!kAbwR`jb3%}FiXa# z2x?$8aqT}|;T69kDg(2^eO?JL-q3ZtnVykxr2pUq8E52%IH8+4Q+_2p%TIA6tVBqp z5|sz3wA}C0nbX@fDlVg15fRE`eUb9d7G!~jwT5lN5AWFdmJ zDt?b>coUJLX(4E6HADqh`cX~8Rq8KdVy{za!^8&ESrnNkgX}dbmNBa8)*)Dtqci|r zR|shkLN>BS6)_x!@NGk@I^mc$2w@o$%dTPr874CfU<2DM0~*#*9T_?@N*Gzh*$En& zcT-+=rcVUN5`Ka!k6AH`&a+fnL+|V!TwqywFlg3Me{+T*v~0FTC8*gp!NrD+EC`7+ z(k?sTvdqN%1N9YagQeD3E~sIY)-|NQG|&RUn@BzXvUjnwKYsCf@BHv9qgWQ($>~0T zC9^>+q}JS~J0bd8s}>4{Y1peSU*96mcwFHC>k|_n!D%$H{j?)+L*n*}P5?-^+JQ_f zkU5E`PUFM7o9$$-mCSt;zGs`SVbdT-Nvj#NPvXggk#jkk!4M5R^aedgvP|XJvBsF__&ARHBLYso6ce1d8*In2N3ra0z!cZ} EAEUGviU0rr literal 0 HcmV?d00001 diff --git a/mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc b/mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0aebd1949010cedad14e1835ac5c4643d8134b0 GIT binary patch literal 198 zcmey&%ge<81l4yO(n0iN5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa{-xkZ`t&2`x@7 zDvrs`%*#wI%}dTmOpWo+OLZyAEK7}fy zRGb=`21I3_+GXk1Bryk0@&Ee@O9{FKt1RJ$TppoJh;6@wTbnHd=w Ii4(=?eXsod1uq|~Bfy~KioVm)67$2mVQ YEi-+yF|!yOJBJWc1K%f+$pM_Z0c0Z=b^rhX delta 45 zcmZ23(k;UKnU|M~0SN5wIHXH$~ A5C8xG From 3318487e2787c2f32c0b5608ba9091dc3dcb5dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sat, 23 Nov 2024 17:54:04 +0900 Subject: [PATCH 04/15] =?UTF-8?q?=EC=A0=9C=EC=95=BD=20=EC=A1=B0=EA=B1=B4?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/members/models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mission_course/members/models.py b/mission_course/members/models.py index 4458351c..4b86ef4a 100644 --- a/mission_course/members/models.py +++ b/mission_course/members/models.py @@ -3,7 +3,8 @@ # Create your models here. class Member(models.Model): + member_id = models.IntegerField(primary_key = True) name = models.TextField() - email = models.TextField() - birth = models.DateField() + email = models.TextField(unique=True) + birth = models.DateField(null=True) join_date = models.DateField() \ No newline at end of file From a2c089aab1f7f0cddcf8e95fad14ebad187929d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sat, 23 Nov 2024 18:03:16 +0900 Subject: [PATCH 05/15] commit --- mission_course/members/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mission_course/members/models.py b/mission_course/members/models.py index 4b86ef4a..4e7a8af0 100644 --- a/mission_course/members/models.py +++ b/mission_course/members/models.py @@ -3,7 +3,6 @@ # Create your models here. class Member(models.Model): - member_id = models.IntegerField(primary_key = True) name = models.TextField() email = models.TextField(unique=True) birth = models.DateField(null=True) From f04a13ea022b4250857879c6e19d9922c6002afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sat, 23 Nov 2024 20:50:41 +0900 Subject: [PATCH 06/15] commit --- mission_course/members/templates/index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mission_course/members/templates/index.html diff --git a/mission_course/members/templates/index.html b/mission_course/members/templates/index.html new file mode 100644 index 00000000..e69de29b From 386a40653d3f5e2f4ac66609b98d36f2f6008133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sun, 1 Dec 2024 11:46:06 +0900 Subject: [PATCH 07/15] pull --- mission_course/db.sqlite3 | Bin 0 -> 139264 bytes mission_course/manage.py | 22 +++ mission_course/members/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 198 bytes .../members/__pycache__/admin.cpython-313.pyc | Bin 0 -> 378 bytes .../members/__pycache__/apps.cpython-313.pyc | Bin 0 -> 564 bytes .../__pycache__/models.cpython-313.pyc | Bin 0 -> 728 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 0 -> 925 bytes mission_course/members/admin.py | 5 + mission_course/members/apps.py | 6 + .../members/migrations/0001_initial.py | 32 +++++ mission_course/members/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-313.pyc | Bin 0 -> 1410 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 209 bytes mission_course/members/models.py | 9 ++ .../members/templates/member_detail.html | 4 + .../members/templates/member_list.html | 5 + mission_course/members/tests.py | 3 + mission_course/members/views.py | 14 ++ mission_course/mission/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 198 bytes .../__pycache__/settings.cpython-313.pyc | Bin 0 -> 2603 bytes .../mission/__pycache__/urls.cpython-313.pyc | Bin 0 -> 1272 bytes .../mission/__pycache__/wsgi.cpython-313.pyc | Bin 0 -> 686 bytes mission_course/mission/asgi.py | 16 +++ mission_course/mission/settings.py | 125 ++++++++++++++++++ mission_course/mission/urls.py | 26 ++++ mission_course/mission/wsgi.py | 16 +++ 28 files changed, 283 insertions(+) create mode 100644 mission_course/db.sqlite3 create mode 100644 mission_course/manage.py create mode 100644 mission_course/members/__init__.py create mode 100644 mission_course/members/__pycache__/__init__.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/admin.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/apps.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/models.cpython-313.pyc create mode 100644 mission_course/members/__pycache__/views.cpython-313.pyc create mode 100644 mission_course/members/admin.py create mode 100644 mission_course/members/apps.py create mode 100644 mission_course/members/migrations/0001_initial.py create mode 100644 mission_course/members/migrations/__init__.py create mode 100644 mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc create mode 100644 mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc create mode 100644 mission_course/members/models.py create mode 100644 mission_course/members/templates/member_detail.html create mode 100644 mission_course/members/templates/member_list.html create mode 100644 mission_course/members/tests.py create mode 100644 mission_course/members/views.py create mode 100644 mission_course/mission/__init__.py create mode 100644 mission_course/mission/__pycache__/__init__.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/settings.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/urls.cpython-313.pyc create mode 100644 mission_course/mission/__pycache__/wsgi.cpython-313.pyc create mode 100644 mission_course/mission/asgi.py create mode 100644 mission_course/mission/settings.py create mode 100644 mission_course/mission/urls.py create mode 100644 mission_course/mission/wsgi.py diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..ff3b7ee4934e335ac5fc4d0ad09459e59f145690 GIT binary patch literal 139264 zcmeI5eQew4eaA&hwyf9^{SrrampG=C(7$65C16Z4VqJ(Xt%9 zIFf9~cjz|xa_ynr2CTz6tiaY`z<>?gAKg}DgNB%cH&yf{JV}tzV4C|d%pSE4z`A|1C=6^(Oy!?;cqkTWuTn)O>5nUg-B%}r!;(Y%7SNfga zM1p(pY*k6+>*pyu``JPlQPKMrbBbFl#A@QD`J}NwF&k2>q$3e>q(ZZ5Sy)_J6&7#J z&kHw}=N1ynYr^&9nvl4)x-_>)TrMORSBX^S#4^`%^5x`ma&bDjVmPRF48Jf#Q7AV99t@k%vNOy8w7%Wn31dC^v4U6c zBaT)p%=U=L-guYG=^Y#6-hZwYS+nt-=m6=V=xiyK%5JGlTI7yWPH!mXi&7xwZ#GNP zNb*XhD(6etT+t_Fl&V_I6;xw-t|C{qNyDIx)F-4$rMxkf?xkIT?msB%?zL+-Im&vj zOb*l8vLWO^3$>u+^7@gYVf{!XKNVV4*4Nubk`yIf&Fv7CX8p9p@@6SlR0*QC;`^l& zJ>KLPXJg%AqLVkEspxIKAWJT?yNUUC;r|J(M@cRRfk6WklWtd~cp$O@%z_E?lmPkjW%3mb|@s?&T+ zaBziYHkD$w)N=9GBprTnYF?l9o=G%l@z<_8oZeE9tG&)nHj6{a%GQ>gS5j(TE|5Es zyc~_BGQmtR#co3^GIVP&TSpWYh6j7D--TFYqh)Vuq5}&ii`-Ua?M`nn$n9^l8n?)4 zvCGj~^A;A5p!Ovraw1q)Z(S?RGFd14Z*=w0roG0>sr8o?_1?BxOsl3%drSFDi5KZP zc!}in*VZ_vcWR2;SB&fmxolaf(!rRiY;@8)f{!r8i7yY^u2)AB%TKfxgD#@D9 zwOw6EKQMCIO_sxbXKeiE`H%1!e%$j9o?rF6TeeadJy@BF2pcVzIs>IFe#PF(ke0CXQAbj$%efjj-P#f~0UH z5{O*yCw^XS_=#$Mc9eXM@F|r^a4wUP)pEI1mJ6i1m8@!sND4+HF)`6coXs_yMdUIW zUFOPaBL+cdP%1L1`G6H=NeagU;!7upi|Y*+VPm=UV5nT&&Re!LNsI);!53Y`N29LA zkkLnzO=+uYSr9Q2CHkg&iHAmAi$S9Y7Uw(!tr(0)gVI$eanfkKVx#fu0U{Q0J+CBj_%e(H(pw0!EbR_}|Iz z*!X|vzsi4_-{C*Rf0X~DW80;pU?2bjAOHd&00JNY0w4eaAOHd&@N*%XYG8TmK3Bn2T-FXwG1t-S5(ZiX=ougNt6fJ;+%+lhHfeWuJ6u2`p|wV-_Qv zeX3!tKdCT$f|R2-{<7`uZ6r*d<;T?6ckU-;s2s-~SocLE8{|)}n z`M3BKe}(V&{Ilm1o{xCSo<+}P&yf2+-GA@?xcg1_s{3635Bk5_|EK*A`hT(i#r~)I z{-^INeIM<6Z{Jzs03Q$l0T2KI5C8!X009tqObEn;ZX5UPbni}1-PPvKjQ8TxN>QLm zLi=s{b7Lgu3$wlC&2E)^?LxZ&&09~j%6+z;n|$X*G21D3J<%d}WR&ENCwl3V>DC7( zDHi#JGbG=+38$g7rV^e%O)Q?7a<-JJtt984s#~?Fr&cYB&pt`4#{EuRB{k8N`JN!@ z7bbg{8f{S1l%s7w?IkvTsYlaeu+q>r>`v9~G(`qGO_H`p7$J7&CVHqQgAo;_ZBCpd z7L(C#rphp)YAVzA3G^ZKDe@W!Cq3J($upU25?eBmS3qb6O{Xb?rq!6iPu~CFCc@oR zu*sT=HkzIxFL-cc&p4QJI_zsorW*ozd4rVPp-F9|YZ{pac{77rXxbVUnkc&Y6nW)> z8@=G5Vj9U*1zkT&UZWtjZD&Vk!_4O4*_MyI89{2>t{uN=p$VwlkXIk5ji#V!qe)=f zXUMA!q?C55p=m%xu#Jo4wFPb>*u_-nquZtweb*%?v7Cx_X?pYoYO9ITcU~gzA5d#e znVvwcHF^5Zr^!18q}6s&jrv|{N`>ls&XX4iT+c{MY-7~jluC98?8StO_;G%K=RDu@eADxHo=m{0WRYxM#UeAtzzX!M(tB4l9k-)3q^Pd-Uh*83z~V zI)sKs2OZow&KUnWGwk4=;acN8r|bJ#4)N50gB#}zv79G|9NY!2C3y41NeAcWOtBho zeW&J33$mPII*d`6ky8$Cl52~)oP5H;Nt{J|Ww@T8xiv&ahDIFR1ZR$y4Dt?cjMGCS z15AK17{b^0Xbx#a!{c#qqg*rC;bsI3@r`~)pe3NuSKp;MVG)TF?8th!!o~EN0~Ebp z2RFsF2P2&I{hC8Pa?r!5ngR^nLk`z7TuU^;anj+M;7p+dJKL%GYz+Uq1{|&nyD}HuoL2W@*|}XwOwQ%!?vO*x3{;8Bm~g@O^E^W zb*1F%Da9C_|L6Gswvm6%pT3C50RkWZ0w4eaAOHd&00JNY0w4eaAn=$H=qKMR*o+L& z`G4EMW2zLgKmY_l00ck)1V8`;KmY_l00ck)1Re>2`t$!^wDDhjB<|n@1V8`;KmY_l z00ck)1V8`;KmY_l;B6%kBH#8GJssT0sr6_6Me)UKLCNJWr%Q$DU@#nr#arJLkfbZ2 zsA2w}z6yX32!H?xfB*=900@8p2!H?xfB*=9z%e9X82=x`(xFHo00JNY0w4eaAOHd& z00JNY0w4ealmN#6Xa^tw0w4eaAOHd&00JNY0w4eaAaMK%(1-p7K565B%>R)8FaEpy zxA}kJzs`S+{}TTN{;&DZ@So)WjQ^{ks!)!UkmVQNxDVUDYV~{sQOk0+T-x5M z)Yo$vIig4bH4{sj4NgukCljklVQz6I`HJ8(C%5JI2}_IZW{@LCh*qc+|65u>$G-yxav!SuaT9M;L4!Wn~ifd zMK3`;bxSQ5a+ON1RIJGQIxR%(jbA$L^iEE4ADF5tsl1xmREpV>tYiwgqMR>f&D&?S za;+v_nokNob224LU<$cnRn4kpVR30ySiChqFWgw3TSzRg3D=WrLgLoy(%d3(w2)j} zB_$}OHq~^MsPPF^^?sFQ(07;Bt+G$pQOfBJrF=0UivFfoVx*+2q*U^HUdj4|NlNHOcsE*St<|DZ$n5>8*xIVGF&rm|Kpto=Sz+1L>xq`blTV z@KmRh^oX9#&EK4j63`DvE9U>}NgPUt)A4}Hs-o?TAF`;1HY0Plpm{V@L0c9p{1XFC z@2jK-TF~24TfTZ9PdlHK6cE#?^|-a}!6WIeyEiyHOmZWG&%ZDBv99mIFzfpChRjSV z=Iwq>kJj~>leP1){p>xc>tjvYvcvq@&iQ5`+vT)5X0}J`P5gaN+irNr#<=&NYem+C zaiRmH4s>d}BfZ|5E5Yqg=`DsqF`w+sOM1&0FH0dMl8OWari-vS_Y<0|PM2e|{ZWo) zXlRy-X^~k1sbA8)x9BE4)$mED_a?dB2%8FCZ+!Ym5|4(%@o*^AM6BH-ow7JR*x@=k zFzc<`QI%|s^`HBTy-sgD&OM0g^;=KX<=0P)w!JQknr}1e&-+!gw=}jcK2hZvaidC4o*7W|uoZ_}PQ!QOQ)Y-~By$zSNmRhqI zVYFS>^bAKlS8sIncqb;fH3qhFFQ2Qbaz(wjtrpX&Y17_<(3E(ws1(#oB&WZ&#yP!H zQ{2A7d}^bmLM~fY=&+^Iwxg@XZ)13+XLzU@QMR@W1E_GgWdKFBc1|T(^Es6a%-Y8d znEyA$G_VN*AOHd&00JNY0w4eaAOHd&00PI5fZIN68?e1)JMo<6ZJ|HWvERA~7WPRbtz+7GbH7sa-lx zEVXWr*YYBZrtPO$fTo}pQfj$EW`gNoIagdSl?zI)S}Jx<>1z$ybT)jb*iCDAMl#KQ zt3+JBeZD%CD_1wHVm7t8DW})(=k^yYircE(G?CMq_)taZAhzzA&OT_f|N6Z9CaFZ3 zMxLz7B3T7&!ZR!aRRb*4`g$>Ux2=%Eb zzx~&3LpLXAF?ysPc8&xu^>}B;4=h+cXk0HDTOT{|ZCl_dG~NhJvKH|Eb8ozhtQ|C! z=d?gUgS!t!VoRx1c1vYa$&DvDq(H1C5SdphRrxWO3 zO8MsV3nZ29J)AT#WQRDwl9*_Xv>`GO4z-A+LaNI8x=%2RASv`giyhKd%}KNc%d{<9 z22#mE*K=i3_5+0ZYv+ArVtt}zVqK4K%f{zT=$uAiJrs?oq55o*Zs*Zz)cDktp4!oi zVYWiIrmetqSTd=(GVb*5O>q0XJ`tm5X*)o=lu>D^Wl>U6!Dv{~=V0_)J(_5XsaxIX zh^~)Z5>hD*apXCH3xbnQ3_RfUZbLsb>mu~cZi}-^^mzr zW101{)O5vZZKMI?WP-nTb&Nbo6y$2Jv)Z>1B9r+9Ij^MDyj&o4pO>SNR3?}SrdY*W zWN=tkzJ=kzp6m5)k&TjRYNE6BOcrU#b7!62V36C7vnsd9X|ZdxwdyS_9;*6veI0A1 zuG%`8%-D_^pS9FvHJ|WnP6wyMk&v2FB4&d#TCucV!<^ifzXf*lFtq56sX>43;u)t` zCJ#T{G`5tcZTs0AN~P79nlc~z^dZuWCjspj)0&^o5=}XLWCGv*1w0>#=Od5F^O5i1 z2Ty*+N5yI?pR2`RHgYviZG7T@J z8#Ek?TxlXweMt6<@k*mvw<-`UuP+A24Ka7sJ^emAWE^xDo<$@VyM{fvK~>sEUq+dj z|9`u}7w`)LAOHd&00JNY0w4eaAOHd&00NIS0X+ZzSXU3kfdB}A00@8p2!H?xfB*=9 z00@A1V8`; zKmY_l00ck)1V8`;K;ZZhaM(GQvp)X+v5o)n@hc!o1Ogxc0w4eaAOHd&00JNY0w4ea zAV9tn)$Ve+35Z_)6&wFu{vY`-@_)&HjQ=3NOLpJ`0w4eaAOHd&00JNY0w4eaAOHd& za43P%UWe_pr2XDnv}S{dbE7Ifuptd{ra_@CoH zWh4La0Ra#I0T2KI5C8!X009sH0T2KI5O~}OBsrIjpK?ubu7tF}e&}8(r8d=cRk$em z-}Aap$z;e6RbLTaf8YCFbq2&hXi}0U0|7w_Uy-CM;lSlUT#UwJhVTF5AGabx4+ww& z2!H?xfB*=900@8p2!H?xfWV_6z~=uwU$>Ee_<#TifB*=900@8p2!H?xfB*=9z&nw^ zzK`o(cw;4TcPAvpm0~p~MWy2Xs!}cHHg4Y~76P$~)`odh~8KBF#_VDTqti=)Knx z!Szs3xqf#eB&Njq?S*QrP*iTeR+wAgT8yo3SLMxnTQ^oFqm#kR&8=(i-YLE^KeIQN z%LbFPD>K){y_+|$WuKmJF$wP83aH81V8`;KmY_l00ck)1V8`;K;WEx x!F5>hqdxxsmW}@wc!2;2fB*=900@8p2!H?xfB*=900_Ku35?nkuFmuS{|CtcbglpZ literal 0 HcmV?d00001 diff --git a/mission_course/manage.py b/mission_course/manage.py new file mode 100644 index 00000000..900c7a29 --- /dev/null +++ b/mission_course/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mission.settings') + 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() diff --git a/mission_course/members/__init__.py b/mission_course/members/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/members/__pycache__/__init__.cpython-313.pyc b/mission_course/members/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ee62e4698f763dbcf1a0e5b6a3fe04c8ef49423 GIT binary patch literal 198 zcmey&%ge<81eazyq=V?kAOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkpqXAmMBk6Iz^F zR2-9=nU|SbnwOlBm>T1sm+DfKS(X~}dc%~r%~KWL&Ybdk<(8QAl;Y(0+|1(Q%>2Cg z=%v9>QZ! literal 0 HcmV?d00001 diff --git a/mission_course/members/__pycache__/apps.cpython-313.pyc b/mission_course/members/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f238fec9d54c1ae15607836d7b3174cd12105bc GIT binary patch literal 564 zcmY*WziSjh6rS1LyPS!KzY>X}5Cw&8t`kH=j0u7fV=>q*KIV4k){))W_06u3v;k|2 z9O$2r&cc7f&N3`mS%nY~F8033TneZ7=6!tcd%PdB;c$`ByZ7U1{)PVEj-0>VJeb|5 zV9Ep&{3YAs$k*5^yURpylZi0l4?>@ZK_11uBS&K1U0AQ{jmk`Po_g6MpOe`w3Z^V! z$OXeda12F&kqEITBJAhAxZe$5sdB8)`Z7lmId*Sn@1@DBQ8pfxRi+9%dZzRBwyB^tN#EMSu^jEau83fQd%i6xt|Lk$g2%6WJCGNUBPj zD;v4wZUw+Lve7BXra?V!8)X4-Kz+^JSf_6ZHXbE!EH#~!+Gy39^qo}6Yoj(%e^klw zxBZj7>DtNH{o{l0NuJphN^PyK45U?yR*~(0>gP#hUE5K;gYG70;I?6h1fSU9jfX#@ z>xWCrdz*OqT;GnvZfU+OXGV7=Z+8v*#48kagU5a~Pw*O1cObh=@F(P)|6+Ge`vG71 L{NgX8@67cN7f_w% literal 0 HcmV?d00001 diff --git a/mission_course/members/__pycache__/models.cpython-313.pyc b/mission_course/members/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6d4bd6b24f7691c969f32389b88c5f0de23e8d2 GIT binary patch literal 728 zcmZuu&ui2`6rR~6+x?Nn_`9@=ETt%W>B(M-h~O%yv_exo4UE}jnoh|Nok>J*g@V+R zm+rwop*Iiy9YWi~mH|QVR7yeEdiPDTE-iH6y?o!i@4d-_hz4Ok@oi3~tx zOh!8Z28bYmT_h?l76vg_i=R6$M@UpJ-=9N^W1*M=g>$h>Gf}^M|6FIot%zo5bWK%V zW^td1V{O77TIt%VMrq>3j8fI06mF778rzh<%e`n^xkBkW7cz@@!jhCyp?y&GHTEHU z%2^aBQwx>FVvk3v)$=m8#$#62tUednhN^F-JfQ)U)J;ld=4ITcUX}^o&od@r=oAbc zL7=lYkRC6QSCR=yVxDl8C;o=V$jgNF1b@%S$+z9p?Lp`C>+Z?kcM=BDr!kk3rwR4b zTu26O7in>Cm{z>i!rPBRTTmnoKE$idTqxAJk^$kF(_MkNTp|}kc eL&#}Je+-QAPt-oEnfTt$>o4Rp`HKJ+o&Nx!8LsXC literal 0 HcmV?d00001 diff --git a/mission_course/members/__pycache__/views.cpython-313.pyc b/mission_course/members/__pycache__/views.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..10e9e085180f15c11c559b2a43455bd9a7023039 GIT binary patch literal 925 zcmbVKK~EDw6rS1Hwn*JA1Pn$GEn?IjXf%dYgcyxR5{Nai>4{Bi*`2gYw!1pB1?AMl z6DK^-1aBVY#=)!qz{8RrAQL!wGK9ofe}Hdx+opK*CG+;}}ziK|f>kbV)2@hO@)Mbp3I1TS_+34Rd5{sI|P(#rq< literal 0 HcmV?d00001 diff --git a/mission_course/members/admin.py b/mission_course/members/admin.py new file mode 100644 index 00000000..6e21e537 --- /dev/null +++ b/mission_course/members/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from members.models import Member + +# Register your models here. +admin.site.register(Member) \ No newline at end of file diff --git a/mission_course/members/apps.py b/mission_course/members/apps.py new file mode 100644 index 00000000..c775af84 --- /dev/null +++ b/mission_course/members/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MembersConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'members' diff --git a/mission_course/members/migrations/0001_initial.py b/mission_course/members/migrations/0001_initial.py new file mode 100644 index 00000000..c7bb7864 --- /dev/null +++ b/mission_course/members/migrations/0001_initial.py @@ -0,0 +1,32 @@ +# Generated by Django 5.1.3 on 2024-11-22 15:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Member', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', models.TextField()), + ('member_id', models.TextField()), + ('join_date', models.DateTimeField()), + ], + ), + migrations.CreateModel( + name='Member_informaiton', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('email', models.TextField()), + ('birth', models.DateTimeField()), + ], + ), + ] diff --git a/mission_course/members/migrations/__init__.py b/mission_course/members/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc b/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce8ade4add9316ec6d63b46d8697e6cbee24b40e GIT binary patch literal 1410 zcma)6!D|yu6rbH})@+)jN!r>rND!&Y7EN2RhsuY1+TzDotwOh6WMSB3r|Hz}Zk^c_ z>q!tidr+tc{{U|uJbZt`cTCem%A5pGMTAHdufEx2Nd=Wo$eZ7rd2fF2&3m&)*=!oY z@ZS7g?*&lO2(Bc@o0sg}YLmddml#FDnYnv2Z` zGX#^cG&{9g9IVAi1`5BVrCX;Kw5zI>0=v<8cQBtr^L+(uj1$Mb^)edE)*Mz=8yeeTr zrS2`E{<~yqBI7i}0M{6CLgI>{Ek-?u?cj%GM;M$i>NMyRA~M^ARRd12?|4KciRaLU zFudqAOkH7Y2GqwcoB_?EMMnBMB@LI0VviG3e?4H}7Y06)#XfXFm=I_Ui2C*DpW4eQ(!YUc(;c9NrnO1x>~Yxc#g~S1wPB-=jS{J39xr8|7Wu+F`QP zk&u9Y1o0ew$Q7Ud)76ww{pp=<3K=7vRJolh9~34(6vkd`cgCmNpC+*g>M()XFzllilThikz#(;ON#y? P-N{ew<)^+OP$KUiNTOfo literal 0 HcmV?d00001 diff --git a/mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc b/mission_course/members/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d8bc36936a002c0cce9af95f212b9a7889850581 GIT binary patch literal 209 zcmey&%ge<81eazyq=V?kAOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkpr4AmMBk6Iz^F zR2-9=nU|SbnwOlBm>T1sm+DfKS(X~}dc%~r%~KWL&Ybdk<(8QAl;Y(0+|1(Q%>2Cg z{{member.name}} +

{{member.email}}

+

{{member.birth}}

+

{{member.join_date}}

diff --git a/mission_course/members/templates/member_list.html b/mission_course/members/templates/member_list.html new file mode 100644 index 00000000..51153edf --- /dev/null +++ b/mission_course/members/templates/member_list.html @@ -0,0 +1,5 @@ +
    + {%for member in members%} +
  1. {{member.member_id}}
  2. + {% endfor %} +
\ No newline at end of file diff --git a/mission_course/members/tests.py b/mission_course/members/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/mission_course/members/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mission_course/members/views.py b/mission_course/members/views.py new file mode 100644 index 00000000..77a229c8 --- /dev/null +++ b/mission_course/members/views.py @@ -0,0 +1,14 @@ +from django.shortcuts import render +from members.models import Member + +# Create your views here. +def member_detail(request, member_id): + member = Member.objects.get(id=member_id) + context = {'member' : member} + return render(request, 'question_detail.html', context) + +def member_list(request): + members = Member.objects.all() + context = {'members' : members} + return render(request, 'member_list.html', context) + diff --git a/mission_course/mission/__init__.py b/mission_course/mission/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mission_course/mission/__pycache__/__init__.cpython-313.pyc b/mission_course/mission/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ee4ab355a6e7543b1316e2e2fc8196212a6b714 GIT binary patch literal 198 zcmey&%ge<81bb#Wq=V?kAOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkpqXAmMBk6Iz^F zR2-9=nU|SbnwOlBm>T1sm+DfKS(X~}dc%~r%~KWL&Ybdk<(8QAl;Y(0+|1(Q%>2Cg zjbjX?^r4|ep{8U^nx<5!qD<^baB=M5>p+VvMq|&leZxG=z2gMD zveacaU9?jB6T0i7KZK|Y(5xbLRZ%1Z?W&ue8Qa7%NTrs2ALpF!J7>;4=Z;?_lQ9lH z|NL~dvzFwz-`&mh6Pheu{0WO6IK)v7@yK_b|I$Z&0@v`p&o%sO{Mf1%ox+ahwaK#P z`8blhtJleB2>EFk1!yGC(P*AS!5ch{!5o4)j>0s7K!XCv)x~b`7kLyH19_e%QG%vW z5~Ug;bZj}!aVRbNF7oskT0j}FT0qCWG3$*dF7o*RO{0@^0iB{5@OK=3S+qz`pttDB z>CS>IHbLSaDZ1JC?w(Z438e7@E|*;5nGmNQ_>W@qz;bHOZ(vQ?KzwftZ&k zNP}paj`vlHMK1@$ejp+@8L-%TsT+JU?`RU5ID=_*uSjQr^A9mi<1Bb}VkowV-ms;#@wDB@Qe zR5ft5=XL~}!6hawDE6t&2Kfn#jg6iTT_`pIj!kXaC1TNQ$ofRhoQzi*_iY9Grv*V- zl;r}059euKwGuVl>~{v|-@uaMd(chx;G>DHOXd}@o6*-WyO|!W&KbYV;%fj?T`u5+ z*QLUBxl(ij#ZnD95ovo{@mAsLcD+=spuyraVf(B@+^U5vdq?PmHQZMFy8W`=wdPU& z*gc)tcy$m1;bfijIU%{SS*plRpdxL_6s}rsaBVJduWouOWBV4>6u4Q4=D8Dh7^af# zW}JDH-qA?=jw3NTldjgnk0{>;5_Un_q# zVJKW~xaGqd@LnajZ??KBZd6TNq+|~_p8WFt({Fwdp8oXxlb?TWbTrmdCPlBbtUhHJ zVBVcSw{1*cm16IK6Zsqtr?2BHbO{`~|7(~J#*v@r`DeZuANYHbdlpRuLnD7G=^I8z0+$sZa%o@$LiBZm-lXq4bmry$T6cXI83%h0osi+=&=2xChC literal 0 HcmV?d00001 diff --git a/mission_course/mission/__pycache__/urls.cpython-313.pyc b/mission_course/mission/__pycache__/urls.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44d68759c4f527aef6b378c7541f201f7cfed01d GIT binary patch literal 1272 zcmb7E&rj4q7;SgEKj?}WBMBN0qXd>F*aj04Y!Eak5ilAT_tsdt?d9A_7@^AeF_EG^{b^CS-hL%J<2=8R0` za!S;BSFUt$ipDc-6tBx0`O4MwOXvMZPJ!iI>wHU5nxkb&sZmsVthbCoW}74B@@Udm6MJwJ_?8FnmpLvg@{DUydZ)%3bGlgnrUHjeNVpI+R-DRt z!npoN4bN9CYI2eh<$|I)-*#IL@*B*AxE^nf?{MnRTx<+rQrPzJTsWeDdSa#CwyV7z zDmOe8ndFYfru?(onu{A6Gcc`G<`Xe*SyAL4{A?;>l(QTU`3y+haXu0IvzCwNwY8!L zy&5D`TN_BxB=SSO9hk_O(w-@oqJn9%!(^J#R;yp*Dgqff5s5c257+T1UN?m7US2$-&g`cn3V@5Zsl!-K0D+n?_n-(;l`|uG# zE6_OJ+d6r_4Ng969q)cJ8V7#P&QCFAJKqhrN^{YPT-i>Mk@bUV_;)d7Dg0X2Q(u*7jCB z_yt;|AE7r79{ms%g+fk>c#u+1)(_xh|Ip$)yg&2!z2EQgW;i!zB4wY>o<#38gnkso z)Jl_NxTlg+6->OFmko+*(u~EZdY#dY37uiJ9T|rDV(u{>XR0q ziS*jc(WUvyX|`~{Xpcm=$2d-j5QI^jakdYEv`n)lF}%r`0D)x;cnt89#NSH*`vUto zWnn*oM+pod!2_R@QH%O1gt*)Fvn(NjFV)m;SIv7~urLmoP(_%I8dx#Pm2|UCC zz>KBL#HwwFED%<>@6(7)H3clSf!cLz#g5s5WOfKy!VXiQ(moIovCUt_n(dmF-;Y3g z#hZ6aM!wkCeA;eyJZEEPr`2vc-pfv7_r=E1{A7DefRuzrqE^n!o~I;uUam8d&yR&z zfzodkW4WP-@-ol?;f&^{0*27@`-#jew;0dSuu$~(wQ}pL?ydkX+>}rPeHz3*xE%@& zP6ps!eK@&(dy22mPOi>Bx=|E*7ne/', views.member_detail), +] + diff --git a/mission_course/mission/wsgi.py b/mission_course/mission/wsgi.py new file mode 100644 index 00000000..f61f0293 --- /dev/null +++ b/mission_course/mission/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for mission project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mission.settings') + +application = get_wsgi_application() From dd361712c0e18e9ed0578d7a9e42584cf36a6036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Sun, 1 Dec 2024 13:16:51 +0900 Subject: [PATCH 08/15] =?UTF-8?q?rest=20framework=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/mission/settings.py | 16 +++------------- mission_course/mission/urls.py | 10 ++-------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/mission_course/mission/settings.py b/mission_course/mission/settings.py index 602906dc..7ca01503 100644 --- a/mission_course/mission/settings.py +++ b/mission_course/mission/settings.py @@ -20,11 +20,9 @@ # See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -<<<<<<< HEAD -SECRET_KEY = 'django-insecure-237h-&23$h)b^@$5wa7fjvd)hcq(v-ij8x6&tm&db@i^f1t5lk' -======= + SECRET_KEY = 'django-insecure-==_cax+f@j=%umo8m3@df=5@5gykf^h#j^q8q6acq#sk1q!ylt' ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc + # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True @@ -42,12 +40,10 @@ 'django.contrib.messages', 'django.contrib.staticfiles', 'members.apps.MembersConfig', -<<<<<<< HEAD 'rest_framework', -======= ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc ] + MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', @@ -112,15 +108,9 @@ # Internationalization # https://docs.djangoproject.com/en/5.1/topics/i18n/ -<<<<<<< HEAD -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' -======= LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul' ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc USE_I18N = True diff --git a/mission_course/mission/urls.py b/mission_course/mission/urls.py index d9ba12ea..b2048c91 100644 --- a/mission_course/mission/urls.py +++ b/mission_course/mission/urls.py @@ -16,18 +16,12 @@ """ from django.contrib import admin from django.urls import path -<<<<<<< HEAD from members import views +from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('members/', views.member_list), path('members//', views.member_detail), + path('api/', include('rest_framework.urls')), ] - -======= - -urlpatterns = [ - path('admin/', admin.site.urls), -] ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc From 28c3e2a3318999c96963939568babe0f9636b675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 17:37:48 +0900 Subject: [PATCH 09/15] =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EB=AA=A9=EB=A1=9D,?= =?UTF-8?q?=20=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C,=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/db.sqlite3 | Bin 139264 -> 139264 bytes .../members/__pycache__/admin.cpython-313.pyc | Bin 378 -> 407 bytes .../__pycache__/models.cpython-313.pyc | Bin 728 -> 844 bytes .../__pycache__/serializers.cpython-313.pyc | Bin 0 -> 879 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 925 -> 2803 bytes mission_course/members/admin.py | 5 -- .../members/migrations/0001_initial.py | 27 ++------- .../__pycache__/0001_initial.cpython-313.pyc | Bin 1410 -> 1193 bytes ..._delete_member_informaiton.cpython-313.pyc | Bin 0 -> 1321 bytes mission_course/members/models.py | 4 +- mission_course/members/serializers.py | 7 +++ .../members/templates/member_create.html | 0 mission_course/members/views.py | 55 ++++++++++++++---- .../__pycache__/settings.cpython-313.pyc | Bin 2603 -> 2655 bytes .../mission/__pycache__/urls.cpython-313.pyc | Bin 1272 -> 1656 bytes mission_course/mission/urls.py | 10 ++-- 16 files changed, 62 insertions(+), 46 deletions(-) create mode 100644 mission_course/members/__pycache__/serializers.cpython-313.pyc create mode 100644 mission_course/members/migrations/__pycache__/0002_member_delete_member_informaiton.cpython-313.pyc create mode 100644 mission_course/members/serializers.py create mode 100644 mission_course/members/templates/member_create.html diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index ff3b7ee4934e335ac5fc4d0ad09459e59f145690..8b291faf7569a669619e782a0deb3807ed987068 100644 GIT binary patch delta 1736 zcmah~?Q2t49KJV6o7S#7)+!w~Y13j?x|!tMd+y7*QJG2FrcIN^v`MrDi8oD}+$1-z z&5ME2C=F`Q+Dda4$U7M1psT&( z${!{{12C9p8LTj7d;iXLFg!~mrE1pZW;iTxv~tI+t(IXCw@0Yb6+tY71S&r^|bHL(FVP# zcT+JQ+m3wP+ul4$>kQKbm{zBU!TK4V>?O_|adr>)^4;Ce-a;%BU!|kvlt{DO0nDqN zfCoHuWGUWQ$dw!He5hWj<(*6^R6EdEa`B6v#+)mYPvS~4DNd~}GhUZ3TwU<<<>T%| zW^pDpmG`;=OGh+qXC08UQ9ODDL6oReD!G-Em{5Mcyl=neL&m`fHl7k#0d5owmM$H* zNT}<+sIK>Yunu*d#PImY$dlX6t&J;N?|zbzuw;ueWw< zbvLdVEP4|-sThCS-U%~kpZx7=b5tUB9qzu`^{{JC=abI89kQ;iU((;zHOZ*XO-SS@ zkQ8dSv*pQ?w>uBfodbah<=dXuTA!UFE#0EsI506mo_)LZjYyW2R?n*>)vAi*=wVBE zel{4MI%pYe3m`-ug35ey?wxn;~zvuI0!UxvNb+(!6SEz*pchcn{RnT@%5r z+C8$e`^9Ny9SGYHgf!3Gd_?{}v@WMsd&M&DQ6u>;laBJt80AYr*NvBAQ;DO)!B>#Ot)uF}WHExnnC-LFDH$ zay+u^IdOtRVKI|pgK_LazS8kxaXEtIaAMs$cT7%)C|o*Sbu}so&UmsVOnGL+y1O0| z++M$Tp`3Ou&jox_E*J<}8wLdYHF-NoVD0u-I9``D-E6`uZ0o*ftr XIflNWdju>m>(R~Ky2oJPe-!=&okid* delta 2205 zcmai$T})GF7{|{`3q8Qe;l<3kXkwOVcCpQ57n?Pb#VzB;i@6K8#3kDjGqag2ZrR7x?o4(7(NSnT$$5M6 zKfmXBpXa>)=X7b6Tv{dHYiejE2%^QjH?QMYk20Y3vkQ;j*n>SZO<}GR@tufir#X&g zkTKLml?yBqcx=4W#Fq;U<|Wp6(9~WoU=FdO(a?;`1w^kABh6fyfJFwe*tp)zmJ1xu z)4cIpvs5lH0xu$ib$0CDS_j6QL>oD0d2Wn&hGUGo&hp(NUO{R*%0DU=gM{0aO!*4#|_o1Gn>VSwu4e!glj~ z*kF!;PvJv&7v|tHyaqomHKZ@Vy}PZJBVa98IIU)q+T5HrlcJ2}4yU!D-qL1#((xuB zjfWj*4++N!_!s;J{sg~-H(&vd!{yR`N``KiwF!fynw(HGa~nTqk|akoi!^^g&D zTGiDG?1s1#?OLZ7$;r5qidDil#2s+nY2uPhDv?Nq%%-vfM>U(=fg`rfa!bGTwOB2b zecZ4ON~C?oUbN@!<7QJE?2Aq-I0h;;hH_g$7pPpkdqb~SovYajBv4`h&IT(uQ2OC~ zdzJMZ0ne58qanC>u?5(Piznn-x7}V_E8Ei(Q;{ego{KA{D-MdL$q+io`gJAuR&W~2 zNF0p&Lx~VC;LyR*d@7O_7qavDOlUN?fJ50izmVuw=f#*mkCD$m9hj9>pQNP36WeUT zp>~9ED~owGo6V-olGJU_(B^=nX@taEX)9F&;C%w#H&6E}w6Uf&geJ!LZf0+5H^XqW zC~c)N?qr2Ee-MuKAzD{zSo#}Y9jyLf)p2Xp>abAIXV|`#NH_|IU?23EZ|B*rebp8K zNNRm`udlB4)mb|K^UbBhmx;RLwKvH}v^BDZvh6S7|=!%}w;(10=^LQbjE-WP5)!xEL!s{EzC*=Oq zswdQQW)v$p%Ngw-JSXH;7BZx zP)VNf4&*)ZD4LJ@GC`J$_YRK?tK3M|ElkD=GaDYDJ&1q)7h&CHf$`RpmfRr diff --git a/mission_course/members/__pycache__/admin.cpython-313.pyc b/mission_course/members/__pycache__/admin.cpython-313.pyc index 96d99475dd7541adc7e37d622b11f1a6d39073e1..cfcd02b0adfd37fa4b07813139e0f62a004e2556 100644 GIT binary patch delta 59 zcmeyxG@Y6EGcPX}0}x!kkdfXrk@p;9&BQy-GDZeQCb~wtxtYbqnfZCT$@!&4#i_a} NS&4b+`IF@sV*pPA6ea)w delta 30 kcmbQv{ELbAGcPX}0}w>db4YKP$a{`4e&QYH$u^A90Ez(#f&c&j diff --git a/mission_course/members/__pycache__/models.cpython-313.pyc b/mission_course/members/__pycache__/models.cpython-313.pyc index d6d4bd6b24f7691c969f32389b88c5f0de23e8d2..5d0e794a520d613d45db4a4478167c9e5dc9e2bd 100644 GIT binary patch delta 446 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 literal 925 zcmbVKK~EDw6rS1Hwn*JA1Pn$GEn?IjXf%dYgcyxR5{Nai>4{Bi*`2gYw!1pB1?AMl z6DK^-1aBVY#=)!qz{8RrAQL!wGK9ofe}Hdx+opK*CG+;}}ziK|f>kbV)2@hO@)Mbp3I1TS_+34Rd5{sI|P(#rq< diff --git a/mission_course/members/admin.py b/mission_course/members/admin.py index fbb9cd2a..bc545f67 100644 --- a/mission_course/members/admin.py +++ b/mission_course/members/admin.py @@ -1,10 +1,5 @@ from django.contrib import admin -<<<<<<< HEAD from members.models import Member # Register your models here. admin.site.register(Member) -======= - -# Register your models here. ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc diff --git a/mission_course/members/migrations/0001_initial.py b/mission_course/members/migrations/0001_initial.py index 21bdc054..5b771304 100644 --- a/mission_course/members/migrations/0001_initial.py +++ b/mission_course/members/migrations/0001_initial.py @@ -1,8 +1,4 @@ -<<<<<<< HEAD -# Generated by Django 5.1.3 on 2024-11-22 15:04 -======= -# Generated by Django 5.1.3 on 2024-11-22 19:52 ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc +# Generated by Django 5.1.3 on 2024-12-26 07:43 from django.db import migrations, models @@ -19,25 +15,10 @@ class Migration(migrations.Migration): name='Member', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), -<<<<<<< HEAD - ('email', models.TextField()), - ('member_id', models.TextField()), - ('join_date', models.DateTimeField()), - ], - ), - migrations.CreateModel( - name='Member_informaiton', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('email', models.TextField()), - ('birth', models.DateTimeField()), -======= - ('name', models.TextField()), - ('email', models.TextField()), - ('birth', models.DateField()), + ('name', models.CharField(max_length=10)), + ('email', models.TextField(unique=True)), + ('birth', models.DateField(null=True)), ('join_date', models.DateField()), ->>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc ], ), ] diff --git a/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc b/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc index ce8ade4add9316ec6d63b46d8697e6cbee24b40e..deddf85b53ccadc650339dd442ed7568e61f8b87 100644 GIT binary patch delta 363 zcmZqTUdhS#nU|M~0SNdxbJLeHP2_9g<_2+r;PWSjiE~T1f;oe^EE!Fhg1ILkKqWCn5@Vs$Dz*}EMUo`&p26@DLIHGFEKauCCG41##>yu zi52lVsd?!o8Mjzda}zUjfP!qLd6|W!skc~@GK)$wfC4Oer8zmbIJ5FI^WswyOHwtN ziui&0Z?UCirskv+PrlDoA?2KrSmXxc-r@{Nttf#qU4W`5moghO_Dx>N>?~tsU}U0e zq??;rT%4Jor<o0657m!3cQHM1k*q{+H0Hj~e@aCrw^l(e`YV0lAOVuspv zDXmLVS{qa@N||2}us{}KxhQ3NLBQ;Wpv;W4>vDRR&{B!RI!{iE~Q?Od&i56Q*F!7>*#3$&QR7 z$bwuzK{1e^2tuVkOE9-3Qw&=WA5cP+k!Rw0O-A0y@r)9D!F<8|mW)8NIIx)|05eMn z-7I~k$(@YJ@vN!2iJ3XKICE2TlTwS~GgEGHX60w*#it~eq-rwVV#!O)O})jImYJH9 zQhZCu7pf{REx!n;uOvUONC@bgmnlF(lkpZ;Zem4zPHJ9yNyaVKq|Bm{jLCLP6>=e| z6(w#U6K?Uk0F4dF%uR)GIh`{SizZ)SGG;8C%);zEIfdDQ@$uxP%r>49Gt{n2XvDRRo0jnE=7{-DH^e##1U6ukFi)4zZ@MJTVI8iA^wh3I< S1yn8ysC;Dra*EV|UIhR(JchFX diff --git a/mission_course/members/migrations/__pycache__/0002_member_delete_member_informaiton.cpython-313.pyc b/mission_course/members/migrations/__pycache__/0002_member_delete_member_informaiton.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6178fecba067b7e41b7f4d14b1e5606524fdf1b8 GIT binary patch literal 1321 zcmZ`(&ube;7@b|M)>=uHSB`AiY7n8Qg%!1}7`u&13A8qWx^)WP^b!_^m3Ayox<8zm zT@&|I2=tso0`4DBN^U;%(0eaEO6oyoPKBOK2q-wE*M7UwBKMFHntAi)%{SkC^Q5c! z`8iR+xgTk`y0mAtsrK$)?0Iro16B#mXKO zQ}JwsR5GSw%^m17E=91Gg^y~^nYp&IC7T-P7Sq+)2)evkXiK0df}%28Nl_AMK2elF zv7GX=F;Ofe3jJM*?WufA-pHEewhT8~nMFtuL|Qa&w51K1&6^cg>Ma?|LfcQPcNte4 z>N)2TuR|CY#a63z8&jW#)OLlspU^_4&VzeG{&Lq)MA44I0CyR&L*j_SF{7T%PVsl- zRA`(q*har6qIg1BC*TD8wnu~#_m{Cp3<=)Oeu7=%_rfEQC7w-PAl1mHk0TKZ zAQV4xU7es(@yRZuC&YSn{`~dR7q?#j^!(M!U#*_QyV#?g z!_NYDgNSirZMHVI);8Cs?AnA~a~|1#FMyc;(@s4Abo$$}zzv&t!eb}^+#{V`tNZ%# zDT{rSbTQyRL-!*Zt4M2%Gjc`!;p=f8X*Wi>`Y>0&D6jriUV3&isy2t!=5NX$js8R2 z_t~Jz`+9g$uAVKAR*m7RaegpZz0=p*7v+_+4@b4;u+}_p3~HbB^*h%oWl-Dh>mOf~ zZ=M~F>g&V$`k(byU%x#rsFl*2tfuA1m1~E8@FpVzRV^*5PxqLS=6xTmtxf8(?sSs3 zPo8^nv-nXa+9n{8`)uN>>>>>> f04a13ea022b4250857879c6e19d9922c6002afc + \ No newline at end of file diff --git a/mission_course/mission/__pycache__/settings.cpython-313.pyc b/mission_course/mission/__pycache__/settings.cpython-313.pyc index 05f4f81850d96d4da794ec5f436b86dd8f2b7a3a..b33a49a5ed4ddb2f3f4501c93b82391cc1e05b44 100644 GIT binary patch delta 210 zcmZ22a$kh^GcPX}0}w<%@=lN1$Q#XMYHJ&xoLHfq=8$EpTAG`0k!$Rbl4fh_V47Z; zofem&oE2ASQD~N!T&P@}ZCI#SnNt#?$uW5@(9 zG4gD7WD{Z(%+A-%E~?^kEY3{S4^GW5&Dk8w?#aklKY2Navy72}k%_L6Zf<6Aab|v= zZgPHUQE{qnN>*ZCdj8~>9N97g417V14O|~M7&v(wSRV)oHSm7o;uK5y)^kvE#j)X3O8Ls!knSS3R!~Evqa=Gb6cB zqf9q5%c86d7wXld5u<%L0j!;Qe5g$9xvl;T0fpb=K;xvbAOFOUgRr`oTJ1 zTlGfxUgD+Dt-x7Fm=bHg;ziQJoQP0j!>jvVip~jlM#@*bNQzbeL(-n$d+E}gh}Sv# z0gEMOs+QQP7kM0SEeXq?e!OP;tOL8U@zmi}z1i+5NMIc9xr+9Q8I%=G)kQNZcU4hC z+GB)?=tQPbqpcEyvQU>bWTwv}6;(INGfGwNh)!&lD9Di2wz+a1t~D`|4dg@9eBRUR zDpa1Q3Th(*na~|!u3$ur#uH38*ze%ItsZWZU14$fF;LjW^k)NypRJ99ZU%`;M?n|E zJT2g`YuxvNBd&4ZgA<`Ly$}OooqPZjS^|Gw3ET`UxD=8JhvB}DD$`DUkw3Cb(a zWWCiH?!jDtowDv#leg3y2N;GqVdD(^n+43}U*OtLkUR+jE_i5>imY!gcq)!Ad%faT1d~ z<1Lng#F7k6##^jqnW^Q)RcwhVxtV$TRUEmgxk;%-#rjneFqTbbUWpZi6Q7x4r|+l9 zGx;EkfzK^=sEQ(1pcS`RiZe@6Z?TjX#7zP VRV^;FSbkt<;b&^(E)oEm3ILq(X+;14 diff --git a/mission_course/mission/urls.py b/mission_course/mission/urls.py index b2048c91..9ca5d936 100644 --- a/mission_course/mission/urls.py +++ b/mission_course/mission/urls.py @@ -15,13 +15,15 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path -from members import views from django.urls import path, include +from members import views urlpatterns = [ path('admin/', admin.site.urls), - path('members/', views.member_list), - path('members//', views.member_detail), + path('api/members/', views.member_list, name = 'member_list'), + path('api/members//', views.member_detail, name = 'member_detail'), + path('api/members/create/', views.member_create, name = 'member_create'), + path('api/members//', views.member_update, name = 'member_update'), + path('api/members//', views.member_delete, name = 'member_delete'), path('api/', include('rest_framework.urls')), ] From 7a744c710081433b60443f9188000345fadd7d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 17:46:20 +0900 Subject: [PATCH 10/15] =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EB=AA=A9=EB=A1=9D,?= =?UTF-8?q?=20=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C,=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/members/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mission_course/members/views.py b/mission_course/members/views.py index 4b224c38..289ca37a 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -15,7 +15,7 @@ def member_list(request): serializer = MemberSerializer(members, many=True) return Response(serializer.data) -# 회원 상세 조회 +# 회원 상세 조회 ! @api_view(['GET']) def member_detail(request, member_id): member = Member.objects.get(id=member_id) From 8f4ed194c190072f807164154c985877f1c75dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 20:46:02 +0900 Subject: [PATCH 11/15] =?UTF-8?q?=EB=B7=B0=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/db.sqlite3 | Bin 139264 -> 139264 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 198 -> 227 bytes .../members/__pycache__/admin.cpython-313.pyc | Bin 407 -> 407 bytes .../members/__pycache__/apps.cpython-313.pyc | Bin 564 -> 593 bytes .../__pycache__/models.cpython-313.pyc | Bin 844 -> 844 bytes .../__pycache__/serializers.cpython-313.pyc | Bin 879 -> 879 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 2803 -> 2775 bytes .../__pycache__/0001_initial.cpython-313.pyc | Bin 1193 -> 1193 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 209 -> 238 bytes mission_course/members/views.py | 32 ++++++++++-------- .../__pycache__/__init__.cpython-313.pyc | Bin 198 -> 227 bytes .../__pycache__/settings.cpython-313.pyc | Bin 2655 -> 2655 bytes .../mission/__pycache__/urls.cpython-313.pyc | Bin 1656 -> 1692 bytes .../mission/__pycache__/wsgi.cpython-313.pyc | Bin 686 -> 715 bytes 14 files changed, 17 insertions(+), 15 deletions(-) diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index 8b291faf7569a669619e782a0deb3807ed987068..a61f99bb8aa4842660b47ce7fbd9d09c6922256d 100644 GIT binary patch delta 375 zcmZoTz|nAkV}dlJ=0q81M$L^0%jDU782DfE`)uY>aNySxVPe*0Ovy^jOV5u_Ov%m6 zi_ghVXABe74nm^Qj<#*G>kQ)tCbQ{ oQc_cttQ4wiYh&3F?p83curf8ZGBDFKGBq|ZG}ylLKBKz>05*4PRR910 delta 192 zcmZoTz|nAkV}dlJ`a~ILM)i#e%jDUT82DfEU)ju~;J`m|ftZL8H?t;VZfb5)YEf}K zgl3vtrfno%go0657 Km!3bd(G>u-6A?rJ delta 27 hcmaFNc#M(zGcPX}0}x!A=`fMom@#Rhz4OHRE&y(m2r>Ww diff --git a/mission_course/members/__pycache__/admin.cpython-313.pyc b/mission_course/members/__pycache__/admin.cpython-313.pyc index cfcd02b0adfd37fa4b07813139e0f62a004e2556..42cab5c361cd11aaf066056188c833e624dbdabb 100644 GIT binary patch delta 20 acmbQvJe`^QGcPX}0}y12=WgWgVFUm%HUy0T delta 20 acmbQvJe`^QGcPX}0}x!kkg<`whY7mGcPX}0}y12=WgV7W@N0M?9b>dV`N}tqHCm^n^|0(nV+YdoL^d0oT{6W Nm6(^FKY1eKVgS@>5!V0! delta 30 kcmcb}vW12FGcPX}0}!a5blAx4%*Yrw*`LvQ@_NQa0D0gDNB{r; diff --git a/mission_course/members/__pycache__/models.cpython-313.pyc b/mission_course/members/__pycache__/models.cpython-313.pyc index 5d0e794a520d613d45db4a4478167c9e5dc9e2bd..a37ccfdc1eeeffe3355c999844a4fa8947e7ffa0 100644 GIT binary patch delta 19 ZcmX@Zc7~1XGcPX}0}y12Z{%`f1^_d31V#V= delta 19 ZcmX@Zc7~1XGcPX}0}$8?Zsc-e1^_Zz1Qq}Q diff --git a/mission_course/members/__pycache__/serializers.cpython-313.pyc b/mission_course/members/__pycache__/serializers.cpython-313.pyc index fb02a2aee66f29f7f103e59b229cd1e0828d027b..05de1f53e8b6df5cf4d87e873d24ac0804cbdd7a 100644 GIT binary patch delta 20 acmaFQ_MVOVGcPX}0}y12=WgUqVFmy`WCa}n delta 20 acmaFQ_MVOVGcPX}0}yP#pR6)+GHgZn0IY!4^spPsL)9#DZXHNt-1^lSXEf9;6VD z^`zxpyz0rEJa`iXj~*>O6avMIqP;cEN$}vzZqvrTer{hvE4( zST4+}+x`K5w4KV-rK~pZz2gI4f-Px7EURDTX-;;GWj!&Lc0~rpKdiTl^*gMu%h%{) z0}ku&Vgnua5@Qf_=wKHe>d?rB3Sl!M#`twn;zuey0d$dxm9wahahd#Zt(zLWLFUlFO zXelXK&KP*d>IwER&@n>te~xlinU+TWwxidcIoTf9&Qup*069n!3=s?yj3SsiP{BaM z0ea;8Y4ZR_&LBlVZG+1M=MlO_g1=7MReO@Bc3nXo#kcd~v6Ae4x7pa-3C)O*dJAVa zr6u{g)0l1TMm;M}^ATn$$Mv0*X7-$^s;TC!l7+#k5L0&Nb^&D=q)gOrXG8ElDd*VZ z8tNvU;a^Uy-=B`Rf{DX zdc_Al&Nb202Und1^4b;@ajTwMV7vW_qBC41plxw_0F=4GoVe~@X*1pDxYl2Oo|+m)aqlBXKQL}Y?nt{lFSoC J^*fT2t0@qsiNMdKqTq(q~wCN6xW+M80-2f24}K?vwZ zVWX0}kR>KA^k3-CC8UXvF~p6Dx-fwdx9YhwB{q7K`Eurb_dLEcXV&7|@yNDig%F%< zyjuFCE=G3YUyJ>@Ih5DO&1{&4(U3g!FCMnSSyr#*2%D_e7~z-k zPtAnxXo!zV?{I<}^4AMCI6S#TTpCbTN~-q=y<0ANT42%`_?ZHbhC}0g zSjpogf1-SwbFd%#{ewt=J&m~qcZ!u?z<3-jC?IlsdYRpQSg1fwg%utWDn{;Ugwi@? zj^q~(sz`nn8W+6P?BqTr1((nR;Ol~iT?TlBzO?tg;Xl+dGb!$>SI=L+IL6QE3H*`2 z!YBAM-H=gE9!QE`=uxzcXI!`R%3deNVZr!tq8C;dQ2 z4TSCyH+uv)0tNw?NFk;R;|0sJb~Uw6O%{dr!{F=__ipo}M$e_T$kW-!vrEZFTYBA2 zJfB&ZS+i5Cc4}FBBQ@;7HT&4AeXL<0U$IB#mGx-yrL|}+l~$t%R-*k2>ZXeHUYg_? zy%*Ewutw%~R(d~j5NP^E(T7*7zBtJNhEqFjFf^ii&S~1$KJE80a;N4+^zX{qThAPSQ3Yyl~Sq<(4aq z>im_F!UlhD^bmiqOh#xKmTj6)7VKaGqUc@$Vu}1|Qqjj-=ES_yz_Be!!3VcxB*iy{wG~BDX#V8zs@`0)S$ diff --git a/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc b/mission_course/members/migrations/__pycache__/0001_initial.cpython-313.pyc index deddf85b53ccadc650339dd442ed7568e61f8b87..ff039f8d41f1d56bdd57776c9f2fe4d3e4d421eb 100644 GIT binary patch delta 19 ZcmZ3PhLGcPX}0}y12=T77{X6%}1?<`|vU}U0eq??;rT%4Jor<o0657 Km!3bdF#rI&WD#%x delta 27 hcmaFIc#)C&GcPX}0}x!A=`fMom@#*vz4OHR{s3_&2wngH diff --git a/mission_course/members/views.py b/mission_course/members/views.py index 289ca37a..e2f7c6ac 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -1,4 +1,3 @@ -from django.shortcuts import render from .models import Member from django.shortcuts import render, redirect #from django.http import JsonResponse @@ -15,13 +14,6 @@ def member_list(request): serializer = MemberSerializer(members, many=True) return Response(serializer.data) -# 회원 상세 조회 ! -@api_view(['GET']) -def member_detail(request, member_id): - member = Member.objects.get(id=member_id) - serializer = MemberSerializer(member) - return Response(serializer.data) - # 회원 가입 @api_view(['POST']) def member_create(request): @@ -31,20 +23,30 @@ def member_create(request): return Response(serializer.data, status=200) return Response(serializer.errors, status=400) +# 회원 상세 조회 ! +@api_view(['GET']) +def member_detail(request, member_id): + member = Member.objects.get(id=member_id) + serializer = MemberSerializer(member) + return Response(serializer.data) + + # 회원 정보 수정 -@api_view(['PATCH']) +@api_view(['PUT']) def member_update(request, member_id): - member = Member.objects.get(id = member_id) - if request.method == 'PATCH': - name = request.data.get('name', '').strip(), - email = request.PATCH['email'], - + member = Member.objects.get(id=member_id) + serializer = MemberSerializer(member, data=request.data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=200) + return Response(serializer.errors, status=400) + # 회원 삭제 @api_view(['DELETE']) def member_delete(request, member_id): member = Member.objects.get(id = member_id) member.delete() - return redirect('/members') + return Response(status=200) \ No newline at end of file diff --git a/mission_course/mission/__pycache__/__init__.cpython-313.pyc b/mission_course/mission/__pycache__/__init__.cpython-313.pyc index 7ee4ab355a6e7543b1316e2e2fc8196212a6b714..b154f58503b2c22e4e006efe1490cfa947a90262 100644 GIT binary patch delta 56 zcmX@c_?VIVGcPX}0}y12=T77{W~`rR?<`|vU}U0eq??;rT%4Jor<o0657 Km!3bd(G>u-6A?rJ delta 30 lcmaFNc#M(zGcPX}0}$+)=`fMom@#Rhz4OF%>=T#S0sx3c31R>M diff --git a/mission_course/mission/__pycache__/settings.cpython-313.pyc b/mission_course/mission/__pycache__/settings.cpython-313.pyc index b33a49a5ed4ddb2f3f4501c93b82391cc1e05b44..056f016ffa9027de56199d82bf0a882f1c727f2b 100644 GIT binary patch delta 20 acmcaFa$kh|GcPX}0}y12=WgT<;Q|0X;{^}^ delta 20 acmcaFa$kh|GcPX}0}w<%^4`cD!UX_9nFXr= diff --git a/mission_course/mission/__pycache__/urls.cpython-313.pyc b/mission_course/mission/__pycache__/urls.cpython-313.pyc index e93a2b4037971e0bbe7846d90ddc583b08dbeb5b..bc64a41d170b0ee082b75e7ef28c3789d69d4db4 100644 GIT binary patch delta 134 zcmeytGl!S=GcPX}0}z~$%}wXr$Sc6e$TwMzQCyQhn8T7ehDC`XSRjTKND7)Vf|M~Z zm@+|VefA>$bRkXQ&2fxo%t}>Ci3OSZxv9BHsYS*5Hko-PRuE2nW{RDDN@`B(=1DAj Z82NNplwQ|&x~T7T!u}#l^yC;e830})A=dx^ delta 99 zcmbQk`-6w~GcPX}0}veI$xUb8$Sc6e$T?Y#QCyQRn8T7ehDC`Xm_LRUND7!Tf|M~Z um@+|VefA>$bU{s_&2fxo%$s+x>|*3oUm<#3)8?Y4&4KufETNMd*kk~kFcjYa diff --git a/mission_course/mission/__pycache__/wsgi.cpython-313.pyc b/mission_course/mission/__pycache__/wsgi.cpython-313.pyc index eedbb033e8b1c7b7c04f81bb2def038ad129701b..146c353507a4d7eca4c54f8d154df19069bca742 100644 GIT binary patch delta 58 zcmZ3-dYYB{GcPX}0}y12=WgWw!pK-XiOE^U$iT=%*GM-vv$!}jKTkI~zqF`0RW~Io MF)uxTvJ+Dd0Nd&jssI20 delta 33 ncmX@jx{j6mGcPX}0}$+)>9CRe3nOFPBqry{`AqDS)0t8LqDu*l From 47f4f7aa1f8db56948365f7a4160d845621557ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 21:42:29 +0900 Subject: [PATCH 12/15] =?UTF-8?q?url=20=EC=B6=A9=EB=8F=8C=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/db.sqlite3 | Bin 139264 -> 139264 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 2775 -> 2651 bytes mission_course/members/views.py | 37 ++++++++++-------- .../mission/__pycache__/urls.cpython-313.pyc | Bin 1692 -> 1510 bytes mission_course/mission/urls.py | 2 - 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index a61f99bb8aa4842660b47ce7fbd9d09c6922256d..f8c5dd91ed0925e8f7878fa9448f7a6b580d560c 100644 GIT binary patch delta 130 zcmZoTz|nAkV}dlJ)ewyOG*l5 ZXXYYQF$pv4azeB=e_Ox(+j>T>0sv<^G4KEY diff --git a/mission_course/members/__pycache__/views.cpython-313.pyc b/mission_course/members/__pycache__/views.cpython-313.pyc index 91ee92f4de19c4448e6f695e8e69463c7135e95f..38ddda2308bd353eed8283f4aec44a77e28d3128 100644 GIT binary patch delta 1046 zcmY*Y&rcIU6rS1HZudu*QegQ}pf0ooR;7@bA{atQ5D%?V=|V!ps7TkM5irwoh2TLT zF%mK{ffI7m8^(hd?rqI!8WBOo|5BFl)MBsuweqkA%-Tf1sf%VIKn6{Vv+B~geNXxiE~fF8<(-n zxs*`iDpn~6wl|^0eb{G$+j29o<&H)egC|XFB?w}t{jko%>e}lDPY1Al!)qU7&6#p5 zaKMr+=t?)7>H7{oVELBdO4yl6JD3c>pAeBwVGn9VN4@V>#9`=ZqB#}ho99-wg|J39 zF1k57;!0NsuMdt4P6}jAtP=8&OrSn-6r?0F?5Wg*D`Nmmm;j6`WD6PXtd6fyl=7AM z-*4#>5l~X7L0sV;Qz+$)nJFJtuabL&8AOHrKQaL z2ve{$j2JJY;G&F^bERn~H#M8a?8RVqEnLnZ#NZqQlY%RyoyShjv4|q}su$@Alg)l0 zNwHyJ-&?jczc{~c6uqH6qvh3uqS3yr?)huh)lL6~zvyqv%WeBg`D$n-v>q!eCQo|b z`?j}W^e?Nsnz5sW3R-AKGYguz>#JT(t|Y(s8uu#e*W;VXjpX(~p|U&g>*kU>wN|0l z+71`|U3t0dPy$gkz?Hj;N_bZ;Th&+e=YE!&E%?KEIeh2=Y6Mr)dAT*DU#^CIWD8y< zFJ#%K_6b9{g+}R1IN)p-UNC}dgOG)-JZzpg&b-|OAEC+UftgQN7UlO@$r zQ-W=a*LcezD?lBdrS4_9x?7%pG%=Hzjb^82ac*)hN1iD;jXh_~T*XnMs=CCjFEiKhlY710g2m%pnAR)StM=}*^7@8;;4AQ1*Y{A>IBcUcn zs|$tP7+tu)B@5%iwf~`{3v@(cq8kzx)UHfic<;0oLOjWQ^WF2h-<&yLecR2eRZUX? zv){o?`mzMT4}NGEu9NC7MqU9Em@ozmNMIP4$iy*ZV1gM3rcm=60uk)97!wVNNH&*Z z4nrog%^fktP>ISoGUb@l&|Sn82DjukU@Cnu3TqddY5+v*cN47^U4PqxO;_Lgr|7ut za34wc97*@2n{@9UFV>+YkyJLBB73|qKTf1FcTz-0gnt?J!F?!Fh<2ch?xJCORrb?| zaFF(ha@(wfx8RmQ4Ov+{tJHkVi|Kdlqt8XPTSt?d&_ef;xZHR|P?aydCM_(8(*VKCcfen=4zMVfsWE30cy}=(W-5(FMfP8YVEp z|8h0UCxsG-zQA3pd~Jtd1n5Ft?mwlvcub@vB~uSlOaRxVW8z^i(!zmh2RYt591as7 zds|w@UaZ^oihkzn-rU_ql3!TP=j@%eq|73_g!U?VH(w;ecf%eL>8J0N zK=U9w^KH+)V{m{Wgx^3r{h|!eiW0q4j21h~u&IJ1I8em^c@H?N_yAIigT?MLY_1>- L!#w1-nJwope3Hq7 diff --git a/mission_course/members/views.py b/mission_course/members/views.py index e2f7c6ac..bc397a7b 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -23,30 +23,35 @@ def member_create(request): return Response(serializer.data, status=200) return Response(serializer.errors, status=400) -# 회원 상세 조회 ! -@api_view(['GET']) + +@api_view(['GET','PUT','DELETE']) def member_detail(request, member_id): member = Member.objects.get(id=member_id) - serializer = MemberSerializer(member) - return Response(serializer.data) + + if request.method == 'GET': # 회원 상세 조회 + serializer = MemberSerializer(member) + return Response(serializer.data) + + elif request.method == 'PUT': # 회원 정보 수정 + serializer = MemberSerializer(member, data=request.data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=200) + return Response(serializer.errors, status=400) + + + elif request.method == 'DELETE': #회원 삭제 + member.delete() + return Response(status=200) -# 회원 정보 수정 @api_view(['PUT']) def member_update(request, member_id): member = Member.objects.get(id=member_id) - serializer = MemberSerializer(member, data=request.data) - if serializer.is_valid(): - serializer.save() - return Response(serializer.data, status=200) - return Response(serializer.errors, status=400) -# 회원 삭제 -@api_view(['DELETE']) -def member_delete(request, member_id): - member = Member.objects.get(id = member_id) - member.delete() - return Response(status=200) + + + \ No newline at end of file diff --git a/mission_course/mission/__pycache__/urls.cpython-313.pyc b/mission_course/mission/__pycache__/urls.cpython-313.pyc index bc64a41d170b0ee082b75e7ef28c3789d69d4db4..43273e8e46ddc3bdae70b18a254f6db253e997c0 100644 GIT binary patch delta 140 zcmbQk`;1%TGcPX}0}xdC<)#O-Ffcp@abN%}1LS;u$1qXjvOI4Ls}e&npD80m-joSK z>$4W|rt@nGY>s18XP$hVMV66o@>7<$$-b=fxkQ0VK+20NCVyj1m+TOmD1Jdw@3Nr& SWfp@E+-&?zjod}TKzRTNg&W-f delta 319 zcmaFHJ%?B0GcPX}0}z~$%}wWIWng#=;=lk8l=0b!aiYfMWX>4&ASsv}f)3^l=CEXr zVNqfT<^!sbLCC;Z!TfL)0x_&Wb%Lgh5IIvO2(8av#GfvtDZE*VQJvZ07H@89Zc=Jd zd}%>SVo7S1Qer`-K18Tk-zGD!#0n~(nPR7(lA4oRk_y)X;!d__k!KW`9M2NRUc?Qw zponMkE|x`H;y@S6P(3>nA7dUlSlwQ|&x~T7T k!u}#lG*GBRY@+xDNxjR0`j=S@KJat!Gc|G-i2_Xl0CNjS=>Px# diff --git a/mission_course/mission/urls.py b/mission_course/mission/urls.py index 9ca5d936..03013275 100644 --- a/mission_course/mission/urls.py +++ b/mission_course/mission/urls.py @@ -23,7 +23,5 @@ path('api/members/', views.member_list, name = 'member_list'), path('api/members//', views.member_detail, name = 'member_detail'), path('api/members/create/', views.member_create, name = 'member_create'), - path('api/members//', views.member_update, name = 'member_update'), - path('api/members//', views.member_delete, name = 'member_delete'), path('api/', include('rest_framework.urls')), ] From 186137769a2279a3af5808d090580075295eb3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 21:43:35 +0900 Subject: [PATCH 13/15] commit --- mission_course/members/views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mission_course/members/views.py b/mission_course/members/views.py index bc397a7b..2055698d 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -45,10 +45,6 @@ def member_detail(request, member_id): return Response(status=200) -@api_view(['PUT']) -def member_update(request, member_id): - member = Member.objects.get(id=member_id) - From 586bf8e43a129e1db87216da78ad05166e07625c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 22:48:14 +0900 Subject: [PATCH 14/15] =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/db.sqlite3 | Bin 139264 -> 139264 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 2651 -> 2581 bytes mission_course/members/views.py | 12 +++++++----- .../mission/__pycache__/urls.cpython-313.pyc | Bin 1510 -> 1535 bytes mission_course/mission/urls.py | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index f8c5dd91ed0925e8f7878fa9448f7a6b580d560c..db6ada07c08b36c6d3cbcf2506c080a7b5dee7c1 100644 GIT binary patch delta 76 zcmZoTz|nAkV}dlJ_Cy(HM(vFWOZvGO`I8y=lRl;$4`Toi%@1P_W3wSJRS%P6pE&_ElbxSu i3IY$r01xgD#1GoD5pcE-lf0U~h5aT`$p diff --git a/mission_course/members/__pycache__/views.cpython-313.pyc b/mission_course/members/__pycache__/views.cpython-313.pyc index 38ddda2308bd353eed8283f4aec44a77e28d3128..f355950cb80826ce21bc21236fd507971bd1f7c5 100644 GIT binary patch delta 1327 zcmZuxUuYaf82@HxcW>{{=6cQPC8@dFHi=+ezV`l8*zO{*F%7dxR#?UH;+sN1!)Yd(A)d8@ME-4F=FZ+Az+fW zdXbgiXS^dcoa3aU1~A~N(=UCi9L6x@{3u-tsTfiGb~c=sXqJpR%k-RfideFxOi1>=6mkFnCN5 z^s-;m}d?ybc+N*vTcWFS8h;_+uX^wCRWn9blyjh2+JtnCPSI@4snY>xf$EfIdodn;3-u0=v1R;J(a9DkOM6M`6%81>~AdW zylWB3mQpYbSK$mz!Bt}F8FZdhD)0oV)J74!&%XB7@BP+T^S)RxyvFkU*7B<1E#C7! zX?p8*VV$mHN~>rQ-j6G|CcqFN495Ee91(C7!8e_^_@#H}(}SinBV1UShY{Me$g1tg z*$T5WmFk-}N_MsDv3a%3svlGe`(EUDI=}}7B*jX#z~)$$nX>P~c5v5oXjNP)o>bSE zGI9-UPdc-}s`=6!KaP_F_}PCWEWox*m3PRaSmJgvv69@34YguJcRqAuLvHN(C3RZ^ zE$Vz6SS|FsBWK*c*EeV@dcoB$Y%35N{_BqvL=JC;ldW)a2Z+##Cf1Odar<_y{!q(p zQ!(?8EuO>T;2S64{t4r3ls@Poh#51CxmU0*n^Wg}Fhvxn6dauPA6?jHyo4|DCgXPZ zP{iNCe_MVTP4M4Lw@mF-l&Q_J*Z3(U;f;aK5O8-wet>~LH6UZoFTwNiIJro6C`iYC Jmqh4G{0m@dF|z;w delta 1424 zcmZ`(&2Jk;6rY)0uh$>zkH#$|rPxgzwF}rORa0aHy%8i^4XT$&m0BfT?7=a_cJy{# zq=Ilk9LkACOYd-k+&Cj7P)~@HEe=IXBR)hAxuwcKz?9&?z(YplwF7nma)ttP4(XjL6_HP>sAssV=Lky^BB zf~mMsi&f(gN6wsREm2KEvcRsJTOXV>t?TA2bK(nIU!EAGh%YcFd4(@>%FdW$&9KEW zWsp{}sf9yt`d{8mD`RJOX`RhO9;%bR5TR;}4Fooa= zghByw8BDAoM`ylAM#+DUrerWhgW!4tgyNf+|Y9Im#;GB78tu03to&Iw-Oku z#)?)?2JiD{suVdf9)2B7ExbVsC)TTldUC=Kzm8rJT@ANO2e0y(%-I8vTVxE4Suzd^ z?AnpUhpQ*di8u!J{YV^jQ9h zCQyMeOMuH6%n+O;I7KjrU?+fD4Jm|BYe_#eI?`Y7HOFG0J}Je(v&8ZQ1%%LO$_=^h zOIufB2xA9#kBY$!NYP_`=onnUaa18q>AUR>cmbVMj`tnHZT6Qn_1WsDs}HRF$jX0F z8Cvfx54em_j>Sd8K;}Qu6OVv z6G+#ur8cQ7=z5R~5X?#@$kH)O-a?>Tk$Pa1kTvKgjzSVNc_n@35KQSm_Zv t{fL!!SnzG^^-`7>_cbPF_XM)XXPJoKS-f-RXMXIl;Ji$(DaBNVzX3YQ9!UTI diff --git a/mission_course/members/views.py b/mission_course/members/views.py index 2055698d..90799b0d 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -1,7 +1,6 @@ from .models import Member -from django.shortcuts import render, redirect +#from django.shortcuts import render, redirect #from django.http import JsonResponse -from django.utils import timezone from rest_framework.decorators import api_view from rest_framework.response import Response @@ -20,13 +19,16 @@ def member_create(request): serializer = MemberSerializer(data = request.data) if serializer.is_valid(): serializer.save() - return Response(serializer.data, status=200) + return Response(serializer.data, {"message" : "가입되었습니다."}, status=200) return Response(serializer.errors, status=400) @api_view(['GET','PUT','DELETE']) def member_detail(request, member_id): - member = Member.objects.get(id=member_id) + try: + member = Member.objects.get(id=member_id) + except Member.DoesNotExist: + return Response({"message" : "존재하지 않는 사용자입니다."}, status=404) if request.method == 'GET': # 회원 상세 조회 serializer = MemberSerializer(member) @@ -42,7 +44,7 @@ def member_detail(request, member_id): elif request.method == 'DELETE': #회원 삭제 member.delete() - return Response(status=200) + return Response({"message" : "삭제되었습니다." }, status=200) diff --git a/mission_course/mission/__pycache__/urls.cpython-313.pyc b/mission_course/mission/__pycache__/urls.cpython-313.pyc index 43273e8e46ddc3bdae70b18a254f6db253e997c0..8382e22dd4a38c0bb248178bd0844af9e9e63f1d 100644 GIT binary patch delta 95 zcmaFH{hyonGcPX}0}xyY%}r0-$jitgTP2;Fnwykb6rYk>l9-vJUs{loSdyxrlA4oR nk~&$IWt!kEUKABYoRfF4tY)m7oW|xzr~xInwykb6rYk>l9-t@S({}Vdl4s4NfFoN YODwAyD<;>m`mi2|zsM3g`2wpx0Qcq=JOBUy diff --git a/mission_course/mission/urls.py b/mission_course/mission/urls.py index 03013275..cb7b3907 100644 --- a/mission_course/mission/urls.py +++ b/mission_course/mission/urls.py @@ -21,7 +21,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('api/members/', views.member_list, name = 'member_list'), - path('api/members//', views.member_detail, name = 'member_detail'), + path('api/members//', views.member_detail, name = 'member_detail/update/delete'), path('api/members/create/', views.member_create, name = 'member_create'), path('api/', include('rest_framework.urls')), ] From 3992f7af2baf9ab3885e9990dbb6c0845bbc4c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GitHub=20=ED=95=B8=EB=93=A4=EB=AA=85?= Date: Thu, 26 Dec 2024 23:07:20 +0900 Subject: [PATCH 15/15] =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=96=BC=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EC=A0=80=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission_course/db.sqlite3 | Bin 139264 -> 139264 bytes .../__pycache__/serializers.cpython-313.pyc | Bin 879 -> 1282 bytes .../members/__pycache__/views.cpython-313.pyc | Bin 2581 -> 2630 bytes mission_course/members/serializers.py | 8 +++++++- mission_course/members/views.py | 5 +++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mission_course/db.sqlite3 b/mission_course/db.sqlite3 index db6ada07c08b36c6d3cbcf2506c080a7b5dee7c1..91451c44448afe2a4ffde4b4fc588e304c3c3a7a 100644 GIT binary patch delta 70 zcmZoTz|nAkV}dlJ&O{k!MxBib3;TH)fIxtOfj=1pH!B*1@=s2lKMyW^g#QTtt<8c3 Q+xVN0tlxfQJ)=zl0I&lUM*si- delta 70 zcmZoTz|nAkV}dlJ_Cy(HM(vFW3;TKbXEHGICo}LTgWzUGgHZm-$@Ay&^4|gqA7S7> W0))3V3l?nSZ$7eq`;qmGHU$6)&KLav diff --git a/mission_course/members/__pycache__/serializers.cpython-313.pyc b/mission_course/members/__pycache__/serializers.cpython-313.pyc index 05de1f53e8b6df5cf4d87e873d24ac0804cbdd7a..2f7999907c4cf8cc1a3f8338c2693c2854ca9198 100644 GIT binary patch delta 426 zcmaFQ*2Km4nU|M~0SK&HcIkD&; zFj_ delta 174 zcmZqTde6r9nU|M~0SGe1bJL$POyrYbbepK|&XUfi$v$z;KSs^Xvl)dMttEjfiljk= zAdv9WWGfN^afCsH2#62`5nu%pAQnhf5m=MdK+>pJtKf`pUq}Xb(0C07c**Z2$lO diff --git a/mission_course/members/__pycache__/views.cpython-313.pyc b/mission_course/members/__pycache__/views.cpython-313.pyc index f355950cb80826ce21bc21236fd507971bd1f7c5..8a111560bfb8dfe99663ac128ba63957ecc0f1de 100644 GIT binary patch delta 655 zcmY+BPiWLY6vk(gm`pZJ%G!Y4UA1v#l~~uw{>!dZ$~DeB`Uw)J4LGgKo)nf9`cPF z|GFo}e4}l;)<}HU#hJQ9qgBdAuwF+RC+8$z@eeIX{Gohav7nc~lWR>^ zVxrEph{kcyrlZfW+l4T35+ob(XbZx*D$_t^7C(?rdXu6o17Zo_IP5UIGBe7<-(6!g zNGNka6MDSNuPEN!_L&{;rPsf7Go4=P2Vpu%`-BdRsjbC*yOG+BS8J&;-&f|D4Lz>R z^t~NrMZ(ihwbo1(B&G|T5I7=G5jZMP=gZnDJi#Am?rkv$J0@^kUA??zHx(XAy zGyQMOPME1hS&X89>A?Dbn2;txr^{x+tnFb^!SJJ+erJh*z{EY|bLRdo%Ci^!y7ULe#jW(A*%i&2zx_xc8J^|YV!BGuZX$-0Q1|FwEzGB delta 570 zcmX>mGF624GcPX}0}!l?$xUB5kyny&!bEk`gcxQehF~^*MpH(R90NlzyA*>dgvn6E z0hZ-JlI28_j$#bRiX!1@x;V@Z&aW5nL-qS%rWmb4^~sB*&q+ zKz#$tMM2Za=a@7Z*(U#BTEt<%7|asPYRNo#5wn2?FHq$z_T1Fs;>7gSQZXR!)rN*Q z^IBg|nDJ(M$D6LLue&>5cQ4VK%*Z0c$U9k%MOmK@sHjK)NE9;x2?d2BK_GRDH#apm zDYYm*xhOTUB(+E$C{uP=R%=|8B`d^5MzQ`YQfg|P)x9|k7 z>msTbMO0TLU*tBrz+zM+4AiB`T*R^Y0!suFqxfV^c2jvtpjZ(Hh)@6#AZHdyfCy<2 zp*XpgU5$}@@)CB!ykx7borb5cuEHCc*4PQS$ob!leGEj9=f;u{vA zqyiA2`X?o|Br!9mNDC+_wONZpk`ZW;3ul}wD2Tzn1WT=C0J|HamBS`CKczG$)vm|@ ns0b9{#i>Bz12ZEd<6Q=+uN(}F`ga+0?lNdje$N@q0`f2bsKtW~ diff --git a/mission_course/members/serializers.py b/mission_course/members/serializers.py index 5c433c72..f61c61b9 100644 --- a/mission_course/members/serializers.py +++ b/mission_course/members/serializers.py @@ -4,4 +4,10 @@ class MemberSerializer(serializers.ModelSerializer): class Meta : model = Member - fields = ['id', 'name', 'email', 'birth', 'join_date'] \ No newline at end of file + fields = ['id', 'name', 'email', 'birth', 'join_date'] + + +class MemberListSerializer(serializers.ModelSerializer): + class Meta : + model = Member + fields = ['id', 'name', 'email'] \ No newline at end of file diff --git a/mission_course/members/views.py b/mission_course/members/views.py index 90799b0d..235ded59 100644 --- a/mission_course/members/views.py +++ b/mission_course/members/views.py @@ -5,12 +5,13 @@ from rest_framework.decorators import api_view from rest_framework.response import Response from .serializers import MemberSerializer +from .serializers import MemberListSerializer # 회원 전체 목록 조회 @api_view(['GET']) def member_list(request): members = Member.objects.all() - serializer = MemberSerializer(members, many=True) + serializer = MemberListSerializer(members, many=True) return Response(serializer.data) # 회원 가입 @@ -19,7 +20,7 @@ def member_create(request): serializer = MemberSerializer(data = request.data) if serializer.is_valid(): serializer.save() - return Response(serializer.data, {"message" : "가입되었습니다."}, status=200) + return Response({"data" : serializer.data, "message" : "가입되었습니다."}, status=200) return Response(serializer.errors, status=400)