implementing apporval system - pai-plznw4me/django-initializer GitHub Wiki

๊ฒฐ์ œ ์‹œ์Šคํ…œ(Approval system) ์ ์šฉํ•˜๊ธฐ

โš ๏ธ ์ž‘์„ฑ์ค‘ !!! (24.2.4)

๊ฒฐ์ œ ์‹œ์Šคํ…œ์ด๋ž€? ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ œ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์Šน์ธ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ž๊ฐ€ ๊ฒฐ์ œ๋ฅผ ์Šน์ธํ•˜๋Š” ์‹œ์Šคํ…œ

๋ชฉ์ฐจ

  1. ๋“ค์–ด๊ฐ€๊ธฐ์ „
  2. ๊ณ„์ • ๊ด€๋ฆฌ ์ ์šฉํ•˜๊ธฐ
    1. Git clone
    2. ํ™˜๊ฒฝ ๊ตฌ์„ฑ
    3. App ๋“ฑ๋ก ๋ฐ Setting ์„ค์ • ์ถ”๊ฐ€
  3. Result
    1. Signup
    2. Login
    3. Profile
    4. admin

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 shell	
    
    from 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 ๊ฒฐ์ œ ์—…๋ฐ์ดํŠธ

2.4 ๊ฒฐ์ œ ์ง€์šฐ๊ธฐ

2.5 ๊ฒฐ์ œ ์Šน๋ฝ