implementing apporval system - pai-plznw4me/django-initializer GitHub Wiki
๊ฒฐ์ ์์คํ (Approval system) ์ ์ฉํ๊ธฐ
โ ๏ธ ์์ฑ์ค !!! (24.2.4)
๊ฒฐ์ ์์คํ ์ด๋? ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ์ฌ๋ฆฌ๋ฉด ์น์ธ ๊ถํ์ด ์๋ ์๊ฐ ๊ฒฐ์ ๋ฅผ ์น์ธํ๋ ์์คํ
๋ชฉ์ฐจ
0. ๋ค์ด๊ฐ๊ธฐ์
0. ๋ค์ด๊ฐ๊ธฐ์ | 1. ๊ณ์ ๊ด๋ฆฌ ์ ์ฉํ๊ธฐ | 2.Result
-
์ ์ฉํ ํ๋ก์ ํธ ์์ฑ (๋ณธ ํฌ์คํ ์์๋
๊ณ์ ๊ด๋ฆฌ์์คํ ์ ์ ์ฉํ ํ๋ก์ ํธ๋ฅผmyproject๋ผ๊ณ ์ง์นญํจ) -
โ๏ธโ๏ธ๊ฒฐ์ ์์คํ ์ ์ ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ account app์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. wiki ๋ด โ๏ธaccount ์ ์ฉํ๊ธฐ ์ ์ฐธ์กฐํด ์ฃผ์ธ์.
1. ๊ฒฐ์ ์์คํ ์ ์ฉํ๊ธฐ
0. ๋ค์ด๊ฐ๊ธฐ์ | 1. ๊ณ์ ๊ด๋ฆฌ ์ ์ฉํ๊ธฐ | 2.Result
-
๋ณธ ํฌ์คํ ์์๋
๊ณ์ ๊ด๋ฆฌ์์คํ ์ ์ ์ฉํ ํ๋ก์ ํธ๋ฅผmyproject๋ผ๊ณ ์ง์นญํจ -
โ ๏ธ โ๏ธ ๋ณธ ํฌ์คํ ์์ ์คํํ๋ Shell ๊ฒฝ๋ก๋ ๋ชจ๋
Project๋ด ์์น์ -
Anaconda ๊ฐ ์ค์น๋์ด์ผ ํจ
1.1 Git clone
git clone https://{token}@github.com/pai-seocho/django-tutorial
โ checkpoint
-
git clone ํ ํด๋๊ตฌ์กฐ ์๋์ ๊ฐ์์ผ ํจ
myproject |- django-tutorial |-ams ...
1.2 ํ๊ฒฝ ๊ตฌ์ฑ
cp django-tutorial/ams/requirements.txt ./
conda create --name {myenv} python=3.8 -y
conda activate {myenv}
1.3 App ๋ฑ๋ก ๋ฐ Setting ์ค์ ์ถ๊ฐ
-
myproject/django-tutorial/ams/accountํด๋น ํด๋์ ์๋ App ์ my_project ํด๋๋ก ์ด๋ํ๋ค. ๊ทธ ์ด์ธ์ ํ์ผ์ ํ์ ์์ผ๋ ์ญ์ ํ๋ค.mv django-tutorial/approval-system/approval ./ -
APP๋ฑ๋ก ๋ฐ์ปค์คํฐ๋ง์ด์ง ์ ์ ๋ชจ๋ธ# myproject/settings.py INSTALLED_APPS = [ 'django.contrib.admin', ... 'approval', # <-- ์ถ๊ฐ๋ ์ฝ๋ ] MEDIA_ROOT = BASE_DIR / 'media' # <-- ์ถ๊ฐ๋ ์ฝ๋ MEDIA_URL = '/media/' # <-- ์ถ๊ฐ๋ ์ฝ๋ -
Migrations
python manage.py makemigrations python manage.py migrate --run-sync -
URLConf ๋ฑ๋ก
from django.urls import path, include # <-- ์ถ๊ฐ๋ ์ฝ๋ from django.conf.urls.static import static # <-- ์ถ๊ฐ๋ ์ฝ๋ from myproject import settings # myproject/urls.py urlpatterns = [ path('admin/', admin.site.urls), path('account/', include('account.urls'), name='account'), # <-- ์ถ๊ฐ๋ ์ฝ๋ path('account/', include('django.contrib.auth.urls')), # <-- ์ถ๊ฐ๋ ์ฝ๋ ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # <-- ์ถ๊ฐ๋ ์ฝ๋ -
LoginView ๋ณ๊ฒฝ
# from django.contrib.auth.views import LoginView class LoginView(RedirectURLMixin, FormView): """ Display the login form and handle the login action. """ ... template_name = "account/login.html" #<-- ๋ณ๊ฒฝ๋ ๋ถ๋ถ -
๊ธฐ๋ณธ ํ ํ๋ฆฟ ๋ค์ด๋ก๋
mv django-tutorial/templates . -
๊ธฐ๋ณธ ํ ํ๋ฆฟ ํ์ผ ๊ฒฝ๋ก ๋ฑ๋ก
TEMPLATES = [ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], # <-- ์ถ๊ฐ๋ ์ฝ๋ ... }, ] -
๊ธฐ๋ณธ ํ ํ๋ฆฟํ๊ทธ ๋ค์ด๋ก๊ทธ
mv django-tutorial/templatetags . -
๊ธฐ๋ณธ ํ ํ๋ฆฟํ๊ทธ ํ์ผ ๊ฒฝ๋ก ๋ฑ๋ก
TEMPLATES = [ { 'OPTIONS': { 'libraries': {'index': 'templatetags.index'}, }, ] -
create admin(superuser) user
python manage.py shellfrom account.helper import createsuperuser createsuperuser() exit()โ Checkpoint :
'Create Superuser : admin ' -
ํ์ผ ์ ๋ก๋ ์ ํ
DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 50 FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 50 -
django-tutorial ํ์ผ ์ญ์
rm -rf django-tutorial -
๊ธฐ๋ณธ helper ํ์ผ ๋ค์ด๋ก๋
mv django-tutorial/helper.py .
2. Result
0. ๋ค์ด๊ฐ๊ธฐ์ | 1. ๊ณ์ ๊ด๋ฆฌ ์ ์ฉํ๊ธฐ | 2.Result
2.1 ๊ฒฐ์ ๋ชฉ๋ก
2.2 ๊ฒฐ์ ์์ฑ
2.3 ๊ฒฐ์ ์ ๋ฐ์ดํธ
- http://localhost:8000/approval/update (โ ๏ธ login ์ด ๋จผ์ ๋์ด์ผ ํ๋ค.)
2.4 ๊ฒฐ์ ์ง์ฐ๊ธฐ
2.5 ๊ฒฐ์ ์น๋ฝ
- http://localhost:8000/approval/
- ๊ฒฐ์ ๊ถํ ๋ณด์ ์